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就可以了。

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