Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
555 views
in Technique[技术] by (71.8m points)

yeoman工作流的node_module的模块管理问题

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里面的模块要怎么安装。
目前我的处理思路是这样的:

  1. 在template目录执行npm install

  2. 在构建的时候创建出这个在全局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就可以了。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...