RT
目前gulp只用在本地项目,而每有新项目时,都需要npm install gulp --save-dev到当前新项目目录,并且把需要的concat,jshint,css-sprite,uglify,rename,都下载到当前心项目目录node_module中。这样很麻烦.
我在网上看到,可以配置环境变量来避免,如下:
export PATH=$PATH: # 将 /usr/bin 追加到 PATH 变量中
export NODE_PATH="/usr/lib/node_modules;/usr/local/lib/node_modules" #指定 NODE_PATH 变量
因为我使用的是zsh, 配置到了.zshrc中。但是将新项目中的node_module删除后,运行gulp default时,就会报错:找不到全局中的gulp以及所依赖的模块。
[14:50:57] Local gulp not found in ~/Documents/MacToWin/webapp/licai
[14:50:57] Try running: npm install gulp
stackover上也搜了不少答案,推荐的方式还是每开新项目,然后重新下载。这下就迷茫了。如此重复的情况,有什么办法可以避免吗?各位。
不好意思各位,是我NODE_PATH配置的问题。已经好了。
在根目录安装需要的模块,每个项目下放个gulpfile.js。不直接调用gulp,改用node xx.js的形式,xx.js内容如下:
javascript
var cp = require('child_process'); var path = require('path'); var fs = require('fs'); var paths = module.paths; for (var i = 0, len = paths.length; i < len; i++) { var gulpDir = path.join(dir[i], './gulp/bin/gulp.js'); var isExist = fs.existsSync(gulpDir); if (isExist) { var gulpFile = path.join(__dirname,'./gulpfile.js'); cp.fork(gulpDir,['--gulpfile=' + gulpFile]); break; } }
学习了。
全局的gulp貌似不能在项目中使用的。建议还是在项目目录下单独安装本地gulp。
全局安装 gulp 是为了可以运行命令行, 而项目中得 gulp 是为了项目脚本依赖。 一般命令行工具都会全局安装,项目中用到的类库还是建议跟着项目走,这样每个项目可以使用自己的空间存放依赖列表,而不会造成全局污染和版本冲突。别人拿到你项目的时候,直接 npm install 就可以安装所有依赖,并立刻执行了。