gpt4 book ai didi

node.js - heroku -- npm postinstall 脚本根据 enviro 运行 grunt 任务

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:49 25 4
gpt4 key购买 nike

我有两个 heroku node.js 应用程序,一个用于生产,一个用于开发,我还有一个 Gruntfile,其中包含特定于开发和生产的任务。我知道您可以设置 package.json 来运行 grunt 作为 npm 的安装后 Hook ,但是您能否根据您所处的环境以某种方式指定要运行的不同任务?

到目前为止,我的 package.json 的相关部分如下所示:

"scripts": {
"postinstall": "./node_modules/grunt/bin/grunt default"
},

与其每次都运行 grunt default,不如在 NODE_ENV 是生产环境时运行“grunt production”,等等。

这可能吗?

最佳答案

遗憾的是,postInstallpostInstallDev 没有区别。不过,您可以制作一个中间脚本来处理差异。例如,如果您有以下内容:

"scripts": { "postinstall": "node postInstall.js" },

然后在此脚本中,您可以检查环境变量并从那里执行正确的 Grunt 任务:

// postInstall.js
var env = process.env.NODE_ENV;

if (env === 'development') {
// Spawn a process or require the Gruntfile directly for the default task.
return;
}

if (env === 'production') {
// Spawn a process or require the Gruntfile directly to the prod task.
return;
}

console.error('No task for environment:', env);
process.exit(1);

几个外围相关的点...

  • 尽量不要让 Grunt 和他合作。作为依赖。将它们保存到 devDependencies 以避免必须在生产中安装所有这些东西。在 vanilla Node 中有一个像上面这样的中间脚本将允许你这样做。我也喜欢使用这样的 postInstall 脚本来安装 git 钩子(Hook)脚本(但也仅限于开发环境)。
  • 您不必使用 ./node_modules/grunt/bin/grunt default。如果 grunt-cli 是一个 dependencydevDependency,npm 知道在哪里查找并且 grunt default 将正常工作。

关于node.js - heroku -- npm postinstall 脚本根据 enviro 运行 grunt 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21634349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com