【问题标题】:How can I invoke npm on heroku command line (to install bower components)?如何在 heroku 命令行上调用 npm(安装 bower 组件)?
【发布时间】:2013-01-22 02:46:47
【问题描述】:

Bower 用于客户端 Javascript,npm 用于服务器端,并读取 component.json 文件以识别应在部署时获取的依赖项,因此我很高兴 heroku 会在 slug 编译时运行它.

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

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

【问题讨论】:

  • 到下面的答案:如果你想看看你的 buildpack 是否可以安全地 npm install 一个具有二进制依赖项的包。添加 package.json 依赖项需要 git push heroku 进行测试,而 heroku run npm install .... 进行测试,不会影响您的生产。我还没有弄清楚如何使用 heroku run bash 运行 npm

标签: node.js heroku bower


【解决方案1】:

您还可以设置postintall 命令,在您的package.json 中设置类似这样的命令

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

然后npm install 也会安装 bower 依赖项。

优点:一个命令可以统治所有这些。

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

【讨论】:

  • 很好的解决方案,但我不知道那个安装后脚本。需要深入研究 npm 文档...
  • 安装最新凉亭的依赖,执行:npm install --save bower
  • 太棒了!没有考虑过那个解决方案。
  • 如果你想让它也能在 Windows 上工作,你需要在命令前加上 node:node ./node_modules/bower/bin/bower install
  • 至少现在不需要包含 ./node_modules/bower/bin/ 位,因为 npm 在运行 package.json 中定义的脚本时会将其包含在 PATH 中。
【解决方案2】:

你可以像这样使用run

heroku run npm install git://github.com/webjay/kaiseki

【讨论】:

  • 好吧,这只是调用 npm(实际上标题有点误导)-> 问题主要是关于在安装后安装 bower 依赖项。我只以 npm 为例。您的命令行会正确调用 npm,但我可能不会忘记手动调用它 -> xavier.seignard 的解决方案会在部署时自动执行所有操作。
  • 这个很没用。这会创建一个临时测功机,运行命令然后销毁它。您真正的测功机不会受到影响。
【解决方案3】:

You should declare NPM dependencies in the package.json file

您从 shell 安装的所有内容都将在退出 shell 时删除。你在一个克隆实例中。

【讨论】:

    【解决方案4】:

    你可以像这样直接使用 bower

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 2013-06-19
      • 1970-01-01
      相关资源
      最近更新 更多