使用npm在多个节点项目目录中运行脚本

时间:2015-04-17 16:15:27

标签: javascript node.js npm

上下文

我有一个主项目,里面有多个节点项目作为子目录。每个人都有自己的node_modules目录和package.json个文件。我希望在我的主package.json文件中定义一个npm脚本,它同时运行来自每个项目的npm脚本。

守则

我的目录结构如下:

main:
  ...
  package.json

  - sub-project-1
    - ...
      package.json
  - sub-project-2
    ...
    package.json

子项目-1 /的package.json:

...
"scripts": {
  "start": "node run foo.js"
}

子项目-2 /的package.json:

...
"scripts": {
  "start": "node run bar.js"
}

Main package.json:

...
"scripts": {
  "start": "/* Here I want to do something like npm sub-project-1/ start && npm sub-project-2/ start */
}

现在,显然我可以将sub-project-1/package.json的{​​{1}}脚本和start的启动脚本中的命令复制并粘贴到bash脚本中并运行它。但我希望能够更改这些sub-project-2/package.json脚本,而无需每次都手动更改bash脚本。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

1.您还可以编写一个python脚本来解析子目录的所有package.jsons,然后生成master package.json文件

2.or你也可以编写一个python脚本来解析子目录的所有package.jsons,然后生成一个shellcript,其中包含了mater package.json 将在"开始"。

中调用它

答案 1 :(得分:0)

以下不是并发的;但是,您可以 通过这种方法更改npm启动脚本。

我还要提到,这不是世界上最具扩展性的方法。但这很简单,所以我认为分享可能会有所帮助。

这儿...

主要package.json:

...
"scripts": {
  "start": "cd Sub-project-1 && npm run start && cd ../Sub-project-2 && npm run start && cd ../ && <parent project start script here>"
}

使用此脚本,您只需要遍历子项目,然后返回运行父项目的脚本即可。