Pet*_*xey 6 ruby-on-rails heroku node.js bower
我刚开始使用bower来管理客户端依赖项.我已经将Bower设置为安装所有文件/vendor/assets/components.
然后我运行bower install评估bower.json文件并安装所有依赖项
#/bower.json
{
"name": "My-App",
"dependencies": {
"angular": "1.0.8",
"bootstrap": "3.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
最后,按照我读过的教程的指示,我从GIT中删除了组件目录.
#.gitignore
#...
# Ignore all stuff manged by bower
/vendor/assets/components
Run Code Online (Sandbox Code Playgroud)
因此,该项目不会在slug中包含任何这些资产,并且需要bower install运行才能安装它们.
这对我来说似乎是明智的,就像将项目中的实际宝石分离是明智的一样.它还遵循12因素应用程序的原则,并明确声明和隔离依赖项.
但是,当我推送到Heroku时,资产预编译失败,因为尚未添加asssets,所以当sprockets尝试评估时:
#application.css.scss
/* ...
*= require bootstrap/dist/css/bootstrap
*= require_self
*= require_tree .
*/
Run Code Online (Sandbox Code Playgroud)
它发现没有什么可以找到的,bootstrap/dist/css/bootstrap因为凉亭尚未安装任何东西.
我已经按照本教程建议添加一个package.json包含以下内容的文件:
"dependencies": {
"bower": "0.6.x"
},
"scripts": {
"postinstall": "./node_modules/bower/bin/bower install"
}
Run Code Online (Sandbox Code Playgroud)
但是,bower install需要不是作为安装后脚本运行,而是需要在推送后的资产前编译脚本中运行.我也不清楚Heroku是否会为Rails应用程序运行npm预处理器
有两种解决方案.第一个也是最简单的是简单地在bower install本地运行并将文件包含在GIT中.这不是什么大问题,但我想坚持12 Factor App的原则.
第二个解决方案是弄清楚如何在资产预编译发生之前启动npm并bower install在Heroku上运行.
这是否可行以任何简单的方式或者在本地简单地编译bower资产更好?
我的结论最后只是在bower install本地运行并将文件包含在GIT中.虽然12因素原则表明这可能不是正确的路线,但我没有发现它在实践中有任何成本,并且更倾向于不是进入自定义构建包的复合复杂性.
您应该尝试使用ddollar 的 multi-buildpack。安装两个构建包时,您可以获得额外的好处,即能够在安装 Nodejs 之后但在安装 ruby 构建包之前运行安装后脚本。bower install这将允许您在预编译之前使用 a 来获取资源。
我整理了一个专业提示,介绍如何处理 Heroku + Rails + Bower 场景。
https://coderwall.com/p/6bmygq
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |