【问题标题】:Grunt - npm module not foundGrunt - 找不到 npm 模块
【发布时间】:2014-11-18 22:49:45
【问题描述】:

我是 Grunt 的新手,在使用新插件设置项目时遇到问题。

到目前为止我有:

  1. 全局安装 grunt-cli
  2. 全局安装 grunt-init
  3. 从 GIT 存储库下载 gruntfile 模板
  4. 创建了一个新目录“test”并导航到终端中的目录
  5. 从模板创建了一个新的 grunt 项目 (grunt-init gruntfile)
  6. 安装了项目依赖(npm install)

这一切都很好,但是我想使用不同的 uglify 插件,所以,仍然在“测试”目录中,我运行:

npm install uglify-js --save-dev

由于我没有使用全局标志,插件按预期下载到 test/node_modules 目录,存在于 test/node_modules/uglify-js 中。 package.json 文件已使用附加依赖项进行了更新:

"uglify-js": "^2.4.15"

然后我编辑 Gruntfile.js,添加

grunt.loadNpmTasks('uglify-js');

然后改变

grunt.registerTask('default', ['jshint', 'qunit', 'concat', 'uglify']);

grunt.registerTask('default', ['concat', 'uglify-js']);

我跑

npm install

确保下载所有依赖项,但现在当我运行 grunt 任务时出现此错误:

Local Npm module "uglify-js" not found. Is it installed?
Warning: Task "uglify-js" not found. Use --force to continue.

有人知道我做错了什么吗?

Mac OS X 10.8.5,节点 v0.10.32

【问题讨论】:

    标签: node.js gruntjs


    【解决方案1】:

    如果你想使用 UglifyJS whit grunt,你应该使用grunt-contrib-uglify。安装它:

    npm install grunt-contrib-uglify --save-dev
    

    在您的Gruntfile.js 中启用它:

    grunt.loadNpmTasks('grunt-contrib-uglify');
    

    并运行您的任务:

    grunt uglify
    

    请参阅docs 了解更多信息。

    【讨论】:

    • 我应该指定 grunt-contrib-uglify 插件包含在 gruntfile 模板中。我的印象是我传入的一个选项 (compress: {drop_console: true}) 不起作用,而实际上它是……我最初的问题现在更具理论性 - 因为 uglify-js 模块是一个通用 Node 模块,而不是 Grunt 插件?
    • 是的@Terry。当您想通过 grunt.js 自动使用 npm 模块时,最好使用(如果不存在,则编写自己的)插件。也许你可以在没有插件的情况下使用 npm 模块,但是你必须做很多不必要的配置,这已经由插件完成。我从未尝试过。
    【解决方案2】:

    我在 Windows 7 上遇到了类似的问题。我通过使用以下模块创建 package.json 解决了这个问题。

    "grunt": "~0.4.5",
    "grunt-contrib-jshint": "~0.10.0",
    "grunt-contrib-nodeunit": "~0.4.1",
    "grunt-contrib-uglify": "~0.5.0"
    

    运行 npm install 并开始在该目录中工作。

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 1970-01-01
      • 2015-03-07
      • 2018-09-05
      • 1970-01-01
      • 2016-06-17
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多