【问题标题】:Rails 6: How to disable Webpack and use Sprockets insteadRails 6:如何禁用 Webpack 并改用 Sprockets
【发布时间】:2019-03-18 02:06:06
【问题描述】:

我正在为 ActionMailbox、ActionText 和多个数据库将 Rails 5.2 应用程序迁移到 6.0。但是,我不知道 webpack,想改用 Sprockets。

如何从 Rails 6 中正确删除 webpack 并安装 Sprockets? rails new app 立即安装 webpack 文件。有没有办法轻松默认链轮?

Rails (Ruby) 应该是 convention over configuration,但 Webpack (Javascript) 通过添加大量配置和复杂性。

【问题讨论】:

  • rails new —help 在应用创建过程中为您提供了很多选项。
  • 我最终还是回到了 Rails 5.2.4,因为 Rails 6 的功能不值得花钱(RAM + 努力)
  • 你有没有设法让 actiontext 在没有 webpacker 的情况下工作?

标签: ruby-on-rails rails-sprockets


【解决方案1】:

我发现this link 很有帮助,我会在这里交叉发布:

生成新应用时使用选项--skip-webpack-install

更改 Gemfile,删除 webpacker,添加:

gem 'sass-rails', '>= 5'
gem 'sprockets', '~> 4'
gem 'sprockets-rails', :require => 'sprockets/railtie'

然后

bundle update sass-rails sprockets # if you are updating 
bundle install # or simply install

如果您使用的是 sprockets 4,请将 app/assets/config/manifest.js 更改为:

//= link_tree ../images
//= link application.js
//= link application.css

如果您使用的是 sprockets 3,请添加到config/initializers/assets.rb

# Rails.application.config.assets.precompile += %w( application.js )

恢复app/assets/javascripts/application.js:

//= require rails-ujs
//= require turbolinks
//= require_tree .

app/views/layout/application.html.erb 中的javascript_pack_tag 更改为javascript_include_tag

【讨论】:

  • 需要注意的一点:如果在生成 Rails 应用程序时使用 --skip-keeps 选项,它不会创建 app/assets/images 文件夹,这会导致 Sprockets 崩溃而没有提及原因。运行 touch app/assets/images/.keep 可以解决这个问题。我在那个障碍上浪费了几个小时!
  • 这对我不起作用,因为我有一个application.scss 文件。这是我的 manifest.js://= link_tree ../images //= link_directory ../javascripts .js //= link_directory ../stylesheets .scss //= link application.scss
【解决方案2】:

如果您想在生成新的 Rails 应用程序时跳过添加 webpacker gem,请使用 --skip-javascript(因为 Webpacker 是 Rails 6 的默认 JavaScript 编译器)。

this reference 所述

【讨论】:

    猜你喜欢
    • 2014-04-29
    • 2020-03-10
    • 2020-04-05
    • 2020-03-21
    • 1970-01-01
    • 2014-05-23
    • 2017-08-14
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多