我对使用 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 的文档?
./bin/importmap pin jquery --download
会下载它。
在 Rails 中使用 JavaScript (关于处理 JS,但关于 importmap 的信息很少)
GitHub 上的importmap-rails(有关 importmap 的更多信息)
我相信你可以手动更新你的
config/importmap.rb
文件来阅读
pin "jquery", to: "./node_modules/jquery"
话虽这么说,我相信使用 importmaps 做出的设计决策可能不包括 npm 或yarn。我相信 importmaps 代表了在 webpacker/yarn/npm 之外处理 javascript 的另一种方法。
importmap.rb 是 package.json 的替代品。使用导入映射时,不直接使用 node 或 npm。如果您不依赖 CDN,则应该在存储库中签入您提供的代码。
所以
importmap-rails
是 package.json
的替代品。您可以使用 CDN 或将依赖项提交到 /vendor/javascript
(v2 默认值),尽管由于安全隐患,我认为这两个都不是好的选择:
但这是设计使然,你不应该(也不能)从node_modules固定。