Node.js 是否可以运行不可执行的npm脚本?
我的PaaS有问题。当我部署我的节点应用程序时,我的脚本正在丢失它们的可执行位。我知道从长远来看,我的PaaS需要解决这个问题,但现在我正在寻找一个解决办法 我在npm脚本文档()中读到了这一点: 通过将该行作为脚本参数传递给sh来运行脚本 如果我理解正确,脚本将如下运行:Node.js 是否可以运行不可执行的npm脚本?,node.js,bash,npm,Node.js,Bash,Npm,我的PaaS有问题。当我部署我的节点应用程序时,我的脚本正在丢失它们的可执行位。我知道从长远来看,我的PaaS需要解决这个问题,但现在我正在寻找一个解决办法 我在npm脚本文档()中读到了这一点: 通过将该行作为脚本参数传递给sh来运行脚本 如果我理解正确,脚本将如下运行: "myscript": "sh bin/myscript.sh" sh myscript.sh 如果这是真的,那么脚本不需要是可执行的。但是,如果我运行的npm脚本不是可执行的 npm运行myscript 我明白了: sh
"myscript": "sh bin/myscript.sh"
sh myscript.sh
如果这是真的,那么脚本不需要是可执行的。但是,如果我运行的npm脚本不是可执行的
npm运行myscript
我明白了:
sh:bin/myscript.sh:权限被拒绝
有办法解决这个问题吗
编辑:以下是我的简单脚本:
#!/bin/bash
echo Hello World
在package.json中尝试这样一行:
"myscript": "sh bin/myscript.sh"
我认为这里的细节是npm正在以package.json中的sh-c'行运行您的命令,如果这只是一个文件路径,sh
将要求它是可执行的。但是,如果没有-c
,sh
将无错误地运行不可执行的shell脚本
sh -c 'bin/myscript.sh'
sh: bin/myscript.sh: Permission denied
sh -c 'sh bin/myscript.sh'
myscript is running
myscript.sh的内容是什么?它是bash脚本吗?