Rails7中如何使用importmap来固定npm、yarn包?

问题描述 投票:0回答:3

我对使用 Rails7 感到非常兴奋,尤其是我们终于摆脱了 webpacker。 然而,今天当我尝试尝试 Rails7 时,我不再了解如何捆绑 javascript 脚本......并且那里没有教程或者我只是找不到它。

比如我想导入jquery所以我就跑了

yarn add jquery

然后我写道:

// application.js
//importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
import jquery from 'jquery'

但是没有成功, 然后我读了 importmap-rails 上的自述文件,然后我跑了

./bin/importmap pin jquery

然后在

config/importmap.rb

中添加了一行
pin "jquery", to: "https://ga.jspm.io/npm:[email protected]/dist/jquery.js"

它有效,但是,这并不是我所期望的。我希望 jquery 来自 node_modules/ 而不是 CDN

我怎样才能做到这一点?导入我从yarn/npm安装的npm包? 或者只是指出我在哪里可以找到有关如何在 Rails7 中使用 javascript 的文档?

ruby-on-rails-7 import-maps
3个回答
15
投票
./bin/importmap pin jquery --download

会下载它。

在 Rails 中使用 JavaScript (关于处理 JS,但关于 importmap 的信息很少)

GitHub 上的

importmap-rails(有关 importmap 的更多信息)


2
投票

我相信你可以手动更新你的

config/importmap.rb
文件来阅读

pin "jquery", to: "./node_modules/jquery"

话虽这么说,我相信使用 importmaps 做出的设计决策可能不包括 npm 或yarn。我相信 importmaps 代表了在 webpacker/yarn/npm 之外处理 javascript 的另一种方法。


0
投票

引用DHH

importmap.rb 是 package.json 的替代品。使用导入映射时,不直接使用 node 或 npm。如果您不依赖 CDN,则应该在存储库中签入您提供的代码。

所以

importmap-rails
package.json
的替代品。您可以使用 CDN 或将依赖项提交到
/vendor/javascript
(v2 默认值),尽管由于安全隐患,我认为这两个都不是好的选择:

但这是设计使然,你不应该(也不能)从node_modules固定。

© www.soinside.com 2019 - 2024. All rights reserved.