gulp local和CLI版本不匹配

时间:2015-12-18 06:04:30

标签: gulp

我之前使用npm install gulp -g全局安装了gulp。然后我克隆了一个现有项目,这要求我使用自己的gulp。现在,当我从项目文件夹外部执行gulp -v时,我得到了这样的不匹配。

C:\Users\userme>    
[11:14:05] CLI version 3.8.11
[11:14:05] Local version 1.0.0

当我从我的项目文件夹中吞下一口之后,我就明白了。

C:\project\new\tools>
[11:14:26] CLI version 3.8.11
[11:14:26] Local version 3.8.11

现在我无法使用gulp正确合并我的JS文件(我在min文件中得到了一些奇怪的格式错误),我怀疑它与这种不匹配有关。

  1. 有没有办法删除全局gulp版本,但保持项目特定gulp
  2. 或者我可以将全球版本更新为@ 3.8.11 吗?
  3. 注意 - 我确实尝试使用npm update gulp@3.8.11 -g更新全局gulp,但什么也没发生。我仍然感到不匹配。

    更新以描述此问题: 我正在使用gulp将多个JS文件合并为一个单个main.js文件。我在合并文件中获得的格式在其中有一个语法错误。

    合并文件中的预期输出 -

    ...
    define('utils/knockoutBindings/slider',['require','ko','jquery'],function(require) {
        'use strict';
        var ko = require('ko');
        var $ = require('jquery');
    ...
    

    合并文件中的实际输出(下面的1行代码错误地替换了上面的整行4行) -

    ...
    var'utils/knockoutBindings/slider',['require','ko','jquery'],function(require) {
    ...
    

    看起来gulp代码中存在一个问题,但是其他用户使用相同的代码,并且它们最终会运行良好。我们发现的唯一区别在于我的gulp版本不匹配。

5 个答案:

答案 0 :(得分:5)

要更新您的本地版本npm install gulp@version_you_need

要更新CLI版本npm install -g gulp@version_you_need

答案 1 :(得分:1)

删除node_modules文件夹并在该目录中运行npm install gulp可以解决我的问题。

答案 2 :(得分:1)

将两个本地版本更新为与全局版本相同,可以解决此问题。我最初的gulp -v产生了CLI version 3.9.1Local version 4.0.0。我从项目文件夹npm install gulp@3.9.1 --save中更新了本地版本。这解决了我的问题。

答案 3 :(得分:0)

npm install -g gulp并没有为我修复它,无论是在项目文件夹内还是在项目文件夹外。我的gulp版本在package.json文件中已经正确。我要做的只是从项目文件夹中运行npm install,并且更正了项目文件夹中的gulp版本。

答案 4 :(得分:0)

Gulp 4使用更新的CLI,该CLI需要全局更新。此CLI向后兼容您可能在本地拥有的任何Gulp 3.X项目-Read more

gulp-cli的{​​{3}}似乎是2.3.0,这意味着当前总会出现不匹配的情况。

如果运行npm install -g gulp,则将安装最新版本的CLI。如果您安装了其他任何版本,那么即使您安装了“更高”的版本,它也会更新为最新版本。

本地版本的当前最新版本为4.0.2
运行npm install --save-dev gulp,以将其最新版本的Gulp安装为项目依赖关系。与CLI版本一样,如果您使用的是旧版本,它将更新。

不匹配的版本正常工作。

侧面注意事项:如果您使用的是Mac,并且具有管理员权限,请记住在全局安装之前使用sudo前缀。 sudo npm install -g gulp

但是,如果您没有管理员权限并且可以更新本地版本,但不能更新全局版本,则可以从项目文件夹中运行node ./node_modules/gulp/bin/gulp.js,它将执行gulp文件,即使您使用错误的CLI版本,也 需要设置default任务。