是 possible/advisable 到 运行 Rails 6 没有 webpack(er) 吗?

Is it possible/advisable to run Rails 6 without webpack(er)?

我正在开始一个新的 Rails 6 应用程序。如果我理解正确的话,Webpack(er) (gem webpacker) 已经取代 Sprockets 作为 including/minifying JS (source) 的新标准。 此外,Rails 6 现在都需要 Node.js and Yarn.

我假设 Node.js 和 Yarn 依赖项只是由于包含 Webpack,或者 Rails 6 的其他组件也需要它们吗?

从 Rails 6 应用程序中删除 Webpack 和 Node 和 Yarn 并继续使用 Rails 资产管道(除了缺少 Webpack 功能)是否有任何可能的缺点?

是的,您可以从 Gemfile 中删除 gem,删除创建的 node_modules 文件夹和 package.json 文件。

之后 运行 捆绑清理 Gemfile.lock 并使用普通视图和模板以旧方式启动代码。请注意,您必须添加 js 引擎,例如 Google V8.

事实上 运行 rails 6 应用程序不需要 webpacker 和 node。

可以 运行 Rails 6 没有 webpacker gem、Node.js 和 Yarn(参见 this Rails issue)。

然而,Rails new--skip-webpack-install 选项仍然包含 Gemfile 中的 webpackergem 并使用 webpacker 配置设置生成的项目(仅 rails webpacker:install 不是 运行).

如果要使用 Rails 使用 Sprockets 的资产管道,则需要 --skip-javascript 选项 is recommended 和手动更改,特别是:

  • <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 添加到 /app/views/layouts/application.html.erb
  • 创建/app/assets/javascripts/application.js(内容,例如here
  • //= link_directory ../javascripts .js 添加到 app/assets/config/manifest.js