我更新我的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文件夹中的缓存中存在......我没有'理解为什么资产管道现在不起作用了?!
那么我怎样才能继续使用经典的资产管道和禁用纱线?
答案 0 :(得分:0)
我一直在研究这个,因为这是一个非常新的问题,我会考虑在Uglifier github页面上发布一个问题。我不明白为什么Uglifier导致纱线问题,因为资产管道文件在app
,而yarn
会将它们保留在node_modules
。
我认为这里的问题是Uglifier
已经对production
文件起作用(事实上这是一个生产设置),资产管道将使用纱线。您可以从纱线application.js
文件夹中要求.scss
和node_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