npm开始执行许多预启动脚本

dqu*_*ada 5 node.js npm

好的,我有一个项目,我使用npm.我需要它来编译几个.coffee脚本.

我需要执行多个预启动脚本,例如:

  "scripts": {
     "prestart": "coffee -c ./file1.coffee",
     "prestart": "coffee -c ./file2.coffee",
     "prestart": "coffee -c ./file3.coffee",
     "prestart": "coffee -c ./file4.coffee",
    "start": "node ./file1.js"
  },
Run Code Online (Sandbox Code Playgroud)

但它似乎只执行最后一个,并且它不允许我在一个上添加许多脚本:

"prestart": "coffee -c ./file1.coffee; coffee -c./file2.coffee"
Run Code Online (Sandbox Code Playgroud)

我能做什么?

Pla*_*ato 7

将它们包装在父脚本中

"scripts": {
  "prestart": "sh ./make-coffee.sh",
  "start": "node ./file1.js"
},

//make-coffee.sh
#!/bin/bash
coffee -c ./file1.coffee
coffee -c ./file2.coffee
coffee -c ./file3.coffee
coffee -c ./file4.coffee
Run Code Online (Sandbox Code Playgroud)

或另一种(仅限unix)解决方案是运行多个命令.我不知道如果早期命令失败会发生什么.

"scripts": {
  "prestart": "coffee -c ./file1.coffee; coffee -c ./file2.coffee; coffee -c ./file3.coffee; coffee -c ./file4.coffee",
  "start": "node ./file1.js"
},
Run Code Online (Sandbox Code Playgroud)

  • @Plato与`;`作为命令分隔符`&&`在大多数shell(包括Windows)中都支持相反,它也快速失败,并且不会尝试继续在中间运行脚本命令. (4认同)
  • 顺便说一句,如果其他人知道一个很好的跨平台解决方案,我很感兴趣! (2认同)

Meh*_*iee 5

你可以使用&&这样的

"scripts": {
  "prestart": "coffee -c ./file1.coffee && coffee -c ./file2.coffee && coffee -c ./file3.coffee && coffee -c ./file4.coffee",
  "start": "node ./file1.js"
},
Run Code Online (Sandbox Code Playgroud)