[英]r.js build fails when trying to evaluate a plugin that shouldn't be evaluated
[英]Load ngmin in r.js build file fails
我試圖用ngmin
在requirejs
的r.js
下面這個 ,但由於某些原因,我無法得到它的工作。 我已經在全球和本地通過npm
安裝了ngmin
和requirejs
,並且這些選項都沒有在onBuildRead()
正確加載ngmin
。 我還導出了NODE_PATH
,但這也沒有幫助。
構建文件在不提供隔離問題的鈎子函數的情況下起作用,但是我不是nodejs
專家,所以我不知道如何進一步解決此問題。 任何幫助表示贊賞。
({
mainConfigFile: './static/js/boot.js',
baseUrl: './static/js',
name: 'boot',
include: 'require.js',
out: './static/js/main-built.js',
normalizeDirDefines: 'all',
onBuildRead: function (moduleName, path, contents) {
var ngmin = require('ngmin');
console.log(ngmin); // ngmin is undefined
return ngmin.annotate(contents); // no method annotate of undefined
}
})
看來,您正在嘗試在r.js的構建配置文件中調用nodejs的require。 但是此文件只是一個配置-它不是由節點執行的-僅由r.js優化器讀取。 您可以通過以下方式將構建配置包裝到Grunt任務中:
將此文件放入項目的根目錄
Gruntfile.js
module.exports = function(grunt) { 'use strict'; // Project configuration. var config = { requirejs : { compile : { options : { mainConfigFile: './static/js/boot.js', baseUrl: './static/js', name: 'boot', include: 'require.js', out: './static/js/main-built.js', normalizeDirDefines: 'all', onBuildRead: function (moduleName, path, contents) { var ngmin = require('ngmin'); console.log(ngmin); return ngmin.annotate(contents); } } } } }; grunt.initConfig(config); // These plugins provide necessary tasks. grunt.loadNpmTasks('grunt-contrib-requirejs'); grunt.registerTask('build', ['requirejs:compile']); // Default task. grunt.registerTask('default', ['watch']); };
通過npm全局安裝grunt-cli
npm install -g grunt-cli
將所需的模塊安裝到您的項目中
npm install grunt grunt-contrib-requirejs
運行默認的grunt任務:
grunt
這將需要js任務。 由於Grungfile.js是普通的CommonJs模塊,因此您可以輕松使用其中的任何npm模塊。 更多關於咕嚕這里 。
了解更多有關grunt的知識之后,請參閱此插件 -如果您決定使用grunt,我認為在當前情況下它可能很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.