1.对于目前的yeoman工作流的node_module分为2个,一个是给主入口index.js用的package.json,一个是给工作流模板用的package.json,目录结构如下
|-generator-xxx
| |-app
| | |-template
| | | |-mobile
| | | |-pc
| | | |-package.json
| | | |-gulpfile.js
| | |-index.js
| |-package.json
对于跟app同级的package.json,在npm link的时候就会帮我们安装好相应的模块。
现在就是如果对于tempalte里面的package.json里面的模块要怎么安装。
目前我的处理思路是这样的:
在template目录执行npm install
-
在构建的时候创建出这个在全局node_module的一个软链接
if(win32){
require('child_process').exec(`mklink /d .\node_modules ${process.env.APPDATA}\npm\node_modules\${yoName}\app\templates\node_modules`)
} else{
this.spawnCommand('ln', ['-s', `/usr/local/lib/node_modules/${yoName}/app/templates/node_modules`, 'node_modules']);
}
我还见过有一种是直接在end的时候执行this.installDependencies()
,但是这种的话每次都会自动的执行npm install
,每个项目都是一个node_module。
目前的话如果第1次用的人,他需要执行1次npm link
,1次npm insall
然后才可以正常的使用这个yo的工作流。
我想问下有没有更好的方案,例如:
我第1次执行yo xxx
的时候,是在全局的template自动执行npm install
,并且link这个软连接过来。这样的话我第1次用这个工作流的时候就只需要执行npm link
就可以了。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…