瞎扯淡 没太懂为什么现在 rails 5.1.2 版本新建项目不带 webpacker,却有 package.json 这个文件的用意是如何?

QueXuQ · 发布于 2017年07月07日 · 最后由 jesktop 回复于 2017年07月08日 · 464 次阅读
3547

看了一下guides,好像找不到webpacker的用法,估计还是需要到github中看。

可是不太懂,为什么新建一个项目,gem里没有webpacker,却把package.json带上呢?

难道说,不需要webpacker就可以把js的相关东西放在package.json里吗?可是找了文档却没有看到。还是说有别的用意呢?

共收到 5 条回复
1

引入了 yarn ,可以通过 assets pipeline 编译。

1107

yarn可以替代过去把前端的依赖放到vendor的作用

756

因为现在的 Rails 项目是 Ruby 和 Node.js 的合体

1107

主要还是因为 Assets Pipeline 没能够打动前端圈子,最终 Rails 决定向前端社区妥协,按照他们的风格办事,其中 yarn 是最符合 DHH 口味的(其实 yarn 可以理解成“更好的”npm,依赖声明 package.json 也是复用 npm 的,并且 yarn 的主力开发 Yehuda Katz 还曾是 Rails core team 成员)。

对于 Rails 项目来说,集成一个前端框架的最好的方式是引入对应的 gem,比如 jquery-rails font-awesome-sass bootstrap-sass 这些 gem 按照 Assets Pipeline 的最佳实践原则组织文件,提供 helper,并且可以对 AP 做一些 tweak(比如 font-awesome 自动把他的 fonts 文件加入到预编译的列表里,调整 CSS 编译器和 JS 压缩器的参数等)

但是,前端的库层出不穷,只有极少数的前端项目接纳了 Assets Pipeline,面对没有接纳 AP 的项目,只能拉下他们的代码,放入到 vendor 目录,这是很土很落后的做法了。

Rails 在正式把 yarn 加入套餐前,社区里就有很多种方案了,npm-rails bower-rails 等,Rails 集成 yarn,算是提出了官方的前端依赖管理的解决方案,把法(AP)外之地的管理现代化。

至于 webpacker,他算是复用了这部分基础设施而已

1164

现在网上大多数的文章都是5.1版本以后,一谈到yarn,就必须把webpacker一起说。其实5.1版本后,加入了yarn,主要目的就是去掉以前为了找一个js或者css包时,想尽办法找到这个包的gem(我就是试过,强迫症 😂 )。实在找不到了,怎么办,那就弄到vendor里了。

所以现在的做法就是:

  1. yarn add jquery
  2. application.js中,加入#= require jquery/dist/jquery

从此就不在需要强迫症的去找gem了。😁

3547 QueXuQ 关闭了讨论 07月10日 12:11
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册