使用 npm 运行 bash 脚本

我想尝试使用 npm 来运行 Web 应用程序的各种构建任务。我知道我可以做到这一点,通过添加一个 scripts字段到我的 package.json像这样:

"scripts": {
"build": "some build command"
},

当您使用更复杂的命令和一系列选项时,这将变得很难操作。有没有可能将这些命令移动到 bash 脚本或类似的代码中?比如:

"scripts": {
"build": "build.sh"
},

npm run build将在哪里执行 build.sh文件中的命令?

通读 这个后,似乎是这样的,但我不清楚确切的地方,我应该放弃我的 build.sh文件或如果我错过了什么。

143787 次浏览

完全有可能。

"scripts": {
"build": "./build.sh"
},

另外,确保在 bash 文件 #!/usr/bin/env bash的顶部放置一个 hash bang

also make sure you have permissions to execute the file

chmod +x ./build.sh

最后,在 npm 中运行 build 的命令是

npm run build

甚至更简单:

我经常这样做一次性和 PoC 的不涉及 VCS

包裹 Json
{
"scripts": {
"ship": "rsync -avz deployable/* <some-server>:/var/www/some-site/sub-dir/"
},
}
...

如果您不想麻烦给予权限和您执行脚本的 env,例如 ,您可以直接这样做

"scripts": {
"build": "sh ./build.sh"
}


  • 只需在 file _ name. sh 之前添加“ bash”关键字

    "scripts": { "build": "bash ./file_name.sh" }

  • 然后在终端上运行“ npm run build”

以防有人看到这一点,并使用 多克来创建此应用程序的映像。

关于:

但我不清楚究竟应该在哪里放置 build.sh 文件

Wherever you do decide to drop your build.sh file, make sure it is included in the Dockerfile image output, i.e. the file's path is in one of the COPY commands in the Dockerfile.

例如,如果你有

scripts {
"build": "./scripts/build.sh"
}

然后,Dockerfile 应该有一个类似于下面这样的 COPY 命令:

COPY scripts/build.sh scripts/