如何在Heroku命令行中调用npm(安装bower组件)?

32

Bower 是用于客户端 JavaScript 的工具,类似于 npm 是用于服务器端的。它会读取 component.json 文件以识别应在部署时获取的依赖项,因此我希望 Heroku 在编译 Slug 时运行它。

不幸的是,我无法从 Heroku 控制台或一次性命令(heroku run "npm help")(heroku run bash -> npm help)中调用 npm 或 bower,就像使用 Ruby 的 rake 一样。我已在 package.json 中放置了 npm 和 node(最新/x 版本),但是在引擎部分而不是依赖项中。

我认为这可以通过自定义node buildpack 来解决,但我认为这对于激活如此明显的东西来说有点过于繁重。


以下回答:如果您想查看您的构建包是否可以安全地npm安装具有二进制依赖项的软件包。添加一个package.json依赖关系需要进行“git push heroku”测试,而进行“heroku run npm install...”测试,则不会影响您的生产力。我仍然没有弄清楚如何在heroku run bash上运行npm - Anton I. Sipos
4个回答

64

你也可以设置一个postintall命令,在你的package.json中像这样:

"dependencies": {
    "bower": "0.6.x"
},
"scripts": {
    "postinstall": "./node_modules/bower/bin/bower install"
}

npm install命令还会安装bower的依赖。

优点:一个命令解决所有问题。

缺点:不必要地将bower嵌入为依赖项。


非常棒的解决方案,我之前不知道有 postinstall 脚本,需要更深入地研究 npm 文档... - Johann Philipp Strathausen
1
要安装最新版本的Bower依赖项,请执行以下命令:npm install --save bower - Jake Berger
太棒了!没想到那个解决方案。 - JHannes
2
如果您想它在Windows上运行,您需要在命令前面加上node: node ./node_modules/bower/bin/bower install - Tamlyn
1
现在至少不需要包含 ./node_modules/bower/bin/ 部分,因为 npm 在运行 package.json 中定义的脚本时会将其包含在 PATH 中。 - Qantas 94 Heavy

9
您可以这样使用run:
heroku run npm install git://github.com/webjay/kaiseki

那只是调用npm(实际上标题有点误导人),问题主要是关于安装bower依赖项的安装。我只是拿npm作为例子。你的命令行会正确地调用npm,但我可能会忘记手动调用它 -> xavier.seignard的解决方案会在部署时自动完成所有操作。 - Stefan
10
这很无用。它会创建一个临时 dyno,运行命令,然后将其销毁。你真正的 dynos 不会受到影响。 - Stas Bichenko

5

-1

你可以直接像这样使用Bower

"dependencies": {
    "bower": "^1.7.9"
},
"scripts": {
    "postinstall": "sudo bower install --allow-root "
}

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