是否可以运行不可执行的npm脚本?

时间:2016-02-29 23:31:43

标签: node.js bash npm

我的PaaS出现问题。当我部署我的节点应用程序时,我的脚本正在丢失其可执行位。我知道从长远来看,我的PaaS需要解决这个问题,但是现在我正在寻找一种解决方法。

我在npm脚本文档(https://docs.npmjs.com/misc/scripts#exiting)中读到了这个:

  

通过将行作为脚本参数传递给sh。

来运行脚本

如果我理解正确,脚本会像这样运行:

sh myscript.sh

如果确实如此,则脚本不需要是可执行的。但是,如果我运行一个不可执行的npm脚本。

npm run myscript

我明白了:

  

sh:bin / myscript.sh:权限被拒绝

有解决方法吗?

编辑:这是我的简单脚本:

#!/bin/bash
echo Hello World

1 个答案:

答案 0 :(得分:1)

在你的package.json中尝试这样一行:

"myscript": "sh bin/myscript.sh"

我认为这里的细则是npm正在以sh -c 'line from package.json here'运行您的命令,如果这只是一个文件路径,sh将要求它是可执行的。但是,如果没有-csh将运行不可执行的shell脚本而不会出现错误。

sh -c 'bin/myscript.sh'
sh: bin/myscript.sh: Permission denied

sh -c 'sh bin/myscript.sh'
myscript is running