我之前使用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文件中得到了一些奇怪的格式错误),我怀疑它与这种不匹配有关。
注意 - 我确实尝试使用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版本不匹配。
答案 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.1
和Local 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
任务。