我正在尝试ngmin
requirejs
r.js
ngmin
之后requirejs
使用npm
,但由于某种原因,我无法让它工作。我已在全局和本地安装了ngmin
和onBuildRead()
到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
}
})
。我还导出了{{1}},但这也无济于事。
构建文件在没有提供隔离问题的钩子函数的情况下工作,但我不是{{1}}专家,所以我不知道如何进一步解决这个问题。任何帮助表示赞赏。
{{1}}
答案 0 :(得分:1)
看来,你试图在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
这将需要任务。由于Grungfile.js是普通的CommonJs模块,因此您可以轻松使用其中的任何npm模块。关于Grunt的更多信息here。
在了解了更多有关grunt之后,请参阅this plugin - 如果您决定使用grunt,我认为它在当前环境中可能很有用。