Heroku:在Django应用程序中运行npm install和gulp build

5

我有一个Django应用程序,已经成功部署到Heroku上。我的Procfile文件只包含:

web: gunicorn omegapp3.wsgi --log-file -

当我运行heroku local时,它可以正常工作。

但是,当我使用heroku push master部署时,控制台检测到一个Node应用程序,因为该应用程序有一个package.json,然后构建失败。

我想要做的是:

  • 运行npm install来安装gulp等。
  • 运行gulp build

你知道我怎么做吗?

2个回答

6
根据官方文档,你应该添加多个构建包到你的设置中,而不是一个单一的构建包。

例如,如果你想部署一个使用Nodejs包(即grunt、gulp等)在你的应用程序上进行一些设置的应用程序,你可以从命令行运行以下命令:

heroku buildpacks:add --index 1 heroku/nodejs
add 命令会将 Nodejs buildpack 添加为一个额外的 buildpack,而不是替换当前的 buildpack。请注意 --index 1。这指定了 Nodejs buildpack 在 buildpack 顺序中的第一位。这很重要,因为最终的 buildpack 是用于实际进程类型的那个。您可以从命令行调用 heroku buildpacks 来验证 buildpack 设置。我运行的是 Python 应用程序,所以我的 heroku buildpacks 如下:
=== your_app_name_here Buildpack URLs
1. heroku/nodejs
2. https://github.com/heroku/heroku-buildpack-python

接下来,按照rocketer所述,您可以将此内容放置在package.json文件中,在部署时运行:

"scripts": {
  "postinstall": "./node_modules/.bin/gulp build"
}

1

通过使用$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-multi.git解决问题。
它允许使用nodepython(您需要在.buildpacks文件中指定)。 为了运行gulp build,我将以下内容添加到我的package.json

"scripts": {
  "postinstall": "./node_modules/.bin/gulp build"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接