gulp 如何管理多项目?

2015-11-09 21:47:23 +08:00
 jeffjade

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

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

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

[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 如何管理多项目方法,新人初来乍到,愿指点一二,拜谢。

5091 次点击
所在节点    JavaScript
14 条回复
cxbig
2015-11-10 04:08:53 +08:00
我们都是每个项目一套 package.json 和 gulpfile.js
hkongm
2015-11-10 09:48:08 +08:00
小项目需要用 gulp 么?如果是简单的浏览器编辑器同步 watch 的话,命令行一行搞定啊
browser-sync start --server --files="*.html,css/*.css,*.css" --browser="google chrome" --open="external"

如果 Node 项目(当然你没发在 Node 板块)的话,那就要像一楼朋友说的一样,需要单独的 Git 仓库和 package 啊
jeffjade
2015-11-10 09:50:03 +08:00
喔,感谢;我们的每个单独项目过于小,而且繁多。如果每个项目下都放一个, SVN 不上传吧,用的时候都得 install 插件; SVN 上传,这个占用空间感觉耗不起;素以,只好另想想办法了。
hkongm
2015-11-10 09:54:00 +08:00
SVN 设置忽略 node_modules 目录,只扔 package.json 即可
jeffjade
2015-11-10 10:05:38 +08:00
@hkongm 项目虽小,也想借助工具来对代码进行检测 /压缩 /美化 /合并 /监测代码 /转化模版等等;而 gulp 无疑是一个不错的选择,素以才...。
Epirus
2015-11-10 11:11:38 +08:00
使用 gulp --cwd . 然后做成一个命令行
alian
2015-11-10 13:11:42 +08:00
我觉得每次 install 其实还能接受,除非你们的 module 很多很多
jeffjade
2015-11-10 15:10:50 +08:00
@alian 暂时也没有很多, 8 , 9 个的样子;但,感觉蛮多的东西要慢慢引入的,比如 Sass 等,所以就必须学习下这块了,若能做到简洁一丢丢,对使用体验来讲就“开心”很多嘛。
jeffjade
2015-11-10 15:11:24 +08:00
@hkongm 感谢。这个方向有必要尝试一下耶。
cxbig
2015-11-10 18:39:27 +08:00
@jeffjade repo 你只要上传 package.json 和 gulpfile.js 即可, node_modules 放 ignore 。
部署的时候直接在服务器端跑一次 npm install 和 gulp 。
jeffjade
2015-11-13 10:41:59 +08:00
在 segmentFault 有一篇文章[ nodejs 中的 NODE_PATH ,地址: http://segmentfault.com/a/1190000002478924 ;谈及到用 NODE_PATH ( NODE 中用来寻找模块所提供的路径注册环境变量)来解决;但是也有其弊端,还未采用。
jeffjade
2015-11-13 11:21:53 +08:00
@cxbig 感谢。办法觉得挺好,可以一试;若服务器环境有“内网测试”,“正式”等,同步起来好像要费点力气折腾下。
cxbig
2015-11-13 15:59:42 +08:00
@jeffjade 如果一个服务器部署同一个 app 的不同的 staging ,可以考虑 capistrano
jeffjade
2015-11-16 20:37:32 +08:00
@cxbig thx 。 capistrano 目测很厉害的样子,可惜目前还不会用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/234896

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX