gulp如何管理多项目?

jeffjade
  • 2.3k

问题:gulp如何管理多项目?

起因:一般采用gulp,需将依赖的node_modules(插件集)down于本地;而我们团队所做的项目多而且小,彼此间又比较独立。如果每个小项目下都对应一个node_modules,很是有些不妥。目前在尝试期: 是把node_modules以及gulpfile.js放在了众小项目之外,每次需要对某个小项目更改,改动gulpfile.js中路径配置,很是不够便捷。

探究过程:有尝试些许办法,比如采用npm link,将需要的插件集合全局下载,让单独小项目link于全局插件。但是用gulp-watch在win下出现如下问题(mac下还未尝试):
npm-link-problem

[10:43:25] 'watch' errored after 7.4 s
[10:43:25] Error: EPERM: operation not permitted, scandir 'E:\$RECYCLE.BIN\S-1-5-21-422716981-4093441979-2207027076-1001'
    at Error (native)
    at Object.fs.readdirSync (fs.js:813:18)
    at Glob._readdir (E:\1021_gulp_test\ddzmod\ddztemplate\node_modules\gulp\node_modules\vinyl-fs\node_modules\glob-watcher\node_modules\gaze\node_modules\globule\node_modules\glob\glob.js:577:20)

即便不出问题,每个小项目之下有对于本机插件依赖的node_modules,对于团队开发,也不怎么妥当。

故而,在此求教gulp如何管理多项目方法,新人初来乍到,愿指点一二,拜谢。

回复
阅读 6.5k
4 个回答

你需要的只是一个全局命令

https://www.npmjs.com/package/fbi

完美解决你的问题

支持任意多个项目共用一个task集,项目目录没有node_module文件夹
支持sass、handlebars
支持自动刷新、FTP上传、webpack打包(可关闭,可排除模块)、zip、gzip
支持非覆盖式部署(md5戳),
支持一键拷贝到本地nginx目录
支持react.js
支持mac和windows
...

我们公司目前所有前端项目都在用这个构建

我觉得应该是配置多个task,一个task代表一个小项目。

我觉得你可以这样做,只是一个想法
目录结构

    -- all_project
         |-- project
                |-- project_1
                       |-- project_1_gulpfile.js
                |-- project_2
                       |-- project_2_gulpfile.js
                |-- project_3
                       |-- project_3_gulpfile.js
         |-- node_modules  
         |-- gulpfile.js
         |-- package.json
      

在你的gulpfile.js,你可以这样写

var gulp = require('gulp');
var wrench = require('wrench');

wrench.readdirSyncRecursive('./project').filter(function(file) {
  return (/gulpfile\.js$/i).test(file);
}).map(function(file) {
  require('./gulp/' + file);
});

gulp.task('build', ['project_1_build','project_2_build','project_3_build']);

gulp.task('clean', ['project_1_clean','project_2_clean','project_3_clean']);

gulp.task('default', ['clean', 'build']);

-------补充--------

又一遍看了你问题,觉的上面的做法还是不好。
既然小项目那么多,为什么不把它们做成node模块,在主项目中添加这些模块为依赖,让npm对包进行管理,这样会不会简单一些。

关于每个node模块中的node_module中模块重复问题, npm会进行解决的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏