gpt4 book ai didi

ruby-on-rails - 如何在 Rails 应用程序中使用 Bower 管理 Javascript 依赖项?

转载 作者:行者123 更新时间:2023-12-03 10:34:19 25 4
gpt4 key购买 nike

Javascript 依赖项在我的 Rails 应用程序中不断增长,这导致了一些问题。一方面,由于数量众多,因此很难跟踪和更新不同 Javascript 库的版本。起初我试过turning them into gems ,但后来我必须管理这些。有些已经是 gem (如主干 rails ),但我想要一个一致的包管理器。

所以我正在调查 Bower ,“网络包管理器”。部分博文from kaefffrom af83一直有帮助,但我仍然遇到问题。我希望这个问题可以引出人们可以用来为他们的项目找到最佳解决方案的各种答案。

我特别希望看到在 Heroku 部署中通过 Bower 管理 Assets 的建议。

最佳答案

一种方法是使用允许您 application.js 的 sprockets 版本。需要 Bower 定义的包。这个特性是在 Sprockets 2.6 中添加的,Rails 3.x 不允许你捆绑 due to a version restriction .要获得该功能,您可以捆绑 gem "sprockets", "2.2.2.backport1" .

这将使 Sprockets 开始在 vendor/assets/components 中寻找 Assets 也。路径是供应商/组件,因为 Bower 包也可以包含 CSS 或图像 Assets ,而不仅仅是 Javascript。当您需要包时,Sprockets 知道要包含哪些 Javascript 的方法是阅读 bower.json main 的文件属性,表示管道应包含哪些文件。这里的一个问题是,许多 Bower 包不提供此属性或提供假定 RequireJS 可用的主要来源(例如 d3 )。你可以看到用 bower list --map 定义了哪些 source main .

main不适合你,你可以简单地使用 Bower 来管理单个远程 JS 文件而不是包。 Josh Peek 有 a gist that demonstrates this . Bower 最新版本预计bower.json而不是 component.json所以我更新了步骤:

$ npm install -g bower
$ mkdir -p vendor/assets
$ cd vendor/assets/
$ curl https://raw.github.com/gist/3667224/component.json > bower.json
$ bower install

那个特别 bower.json加载 jQuery。然后在您的 application.js您可以简单地 //= require jquery和 sprockets 会在您的 vendor/assets/components 中找到它.要添加新的依赖项,只需将它们包含在您的 bower.json 中。并运行 bower install再次,例如:
{
"dependencies": {
"jquery": "http://code.jquery.com/jquery-1.8.1.js",
"d3": "http://cdnjs.cloudflare.com/ajax/libs/d3/3.0.8/d3.js"
}
}

如果您想管理您的 libvendor一个配置文件中的 Assets ,您可以使用 bower-rails ,但使用 lib 没有多大意义.该 gem 还提供了一些 Rake 任务,但除了基本的 Bower 命令之外,它们什么都不做。

据我所知,在 Assets 编译期间还没有办法根据需要安装 Bower。因此,如果您使用 Heroku 之类的部署环境,则需要提交 vendor/assets/components目录并通过 bower 更新它命令。

如果您能在 application.js 中使用一个指令来要求整个 Bower 依赖集,那就太好了。 . gist from kaeff说明如何创建 require_bower_dependencies指示。目前还没有 gem 可以为您执行此操作。在此之前,您必须在 bower.json 中声明每个依赖项。和 application.js .

关于ruby-on-rails - 如何在 Rails 应用程序中使用 Bower 管理 Javascript 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16266528/

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