如何使用没有纱线和卷筒纸的导轨5.1+?

时间:2018-03-12 18:53:40

标签: ruby-on-rails ruby-on-rails-5 asset-pipeline assets

我更新我的rails应用程序以通过5.1.X到日, 但令我惊讶的是,我的配置缩小了JS和CSS dosn不再工作......

config.assets.js_compressor = Uglifier.new(output: {comments: /^!/})
  

**调用yarn:install(first_time)   **执行yarn:install在系统中未检测到Yarn可执行文件。在https://yarnpkg.com/en/docs/install下载纱线   **执行资产:预编译佣金中止! Uglifier ::错误:无效的作业

如果我注释掉这一行,它就可以了,但JS并没有缩小,并且网站上没有访问权......就像所有其他资产一样,但是在/ public文件夹中的缓存中存在......我没有'理解为什么资产管道现在不起作用了?!

那么我怎样才能继续使用经典的资产管道和禁用纱线?

1 个答案:

答案 0 :(得分:0)

我一直在研究这个,因为这是一个非常新的问题,我会考虑在Uglifier github页面上发布一个问题。我不明白为什么Uglifier导致纱线问题,因为资产管道文件在app,而yarn会将它们保留在node_modules

我认为这里的问题是Uglifier已经对production文件起作用(事实上这是一个生产设置),资产管道将使用纱线。您可以从纱线application.js文件夹中要求.scssnode_modules中的文件,这些文件将包含在您的资源中。

在此guide中,您可以了解rails如何需要不同的组件

  active_record/railtie
  action_controller/railtie
  action_view/railtie
  action_mailer/railtie
  active_job/railtie
  action_cable/engine
  rails/test_unit/railtie
  sprockets/railtie

我快速查看了这一点,在yarn中找不到与railties/lib/rails/all.rb相关的内容,因此我决定在rails存储库中搜索yarn关键字并查找出this file

# Be sure to restart your server when you modify this file.

# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'

# Add additional assets to the asset load path.
# Rails.application.config.assets.paths << Emoji.images_path
<%- unless options[:skip_yarn] -%>
# Add Yarn node_modules folder to the asset load path.
Rails.application.config.assets.paths << Rails.root.join('node_modules')
<%- end -%>

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in the app/assets
# folder are already added.
# Rails.application.config.assets.precompile += %w( admin.js admin.css )

所以也许你应该search for this option\[:skip_yarn\]? 祝你好运

的Fabrizio