在r.js构build文件中加载ngmin失败

我试图在requirejsngmin中使用ngmin ,但由于某种原因,我无法使其工作。 我已经通过全局和本地npm安装ngminrequirejs ,这些选项都不会在onBuildRead()正确加载ngmin 。 我也导出了NODE_PATH ,但是这也没有帮助。

构build文件没有提供隔离问题的钩子函数,但我不是一个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 } }) 

看来,你正在试图调用rjj的构buildconfiguration文件中的nodejs的要求。 但是这个文件只是一个configuration – 它不是由节点执行的 – 它只能被r.js优化器读取。 您可以按照以下方式将您的构buildconfiguration包装到Grunt任务中:

  1. 把这个文件放到你的项目的根目录下

    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']); }; 
  2. 通过npm全局安装grunt-cli

    npm install -g grunt-cli

  3. 将所需模块安装到您的项目中

    npm install grunt grunt-contrib-requirejs

  4. 运行默认的咕噜声任务:

    grunt

这将需要任务。 由于Grungfile.js是普通的CommonJs模块,你可以很容易地使用它的任何npm模块。 更多关于Grunt的信息

在学习了更多关于grunt的信息之后,看看这个插件 – 如果你决定使用grunt,我认为它在当前的情况下可能是有用的。