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

QueXuQ · 2017年07月07日 · 最后由 jesktop 回复于 2017年07月08日 · 3229 次阅读

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

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

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

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

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

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

主要还是因为 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,他算是复用了这部分基础设施而已

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