【问题标题】:How use rails 5.1+ without yarn and webpack?如何在没有纱线和 webpack 的情况下使用 rails 5.1+?
【发布时间】:2018-03-12 18:53:39
【问题描述】:

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

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

** 调用 yarn:install (first_time) ** 执行 yarn:install Yarn 可执行文件未在系统中检测到。在https://yarnpkg.com/en/docs/install 下载 Yarn ** 执行资产:预编译 rake 中止! Uglifier::Error: 无效赋值

如果我注释掉该行,它可以工作,但 JS 没有被缩小并且现场无法访问......就像所有其他资产一样,但 /public 文件夹中的缓存中存在......我不明白为什么资产管道现在不起作用?!

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

【问题讨论】:

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


    【解决方案1】:

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

    我认为这里的问题是Uglifier 已经在production 文件上工作(实际上这是一个生产设置),并且资产管道将使用纱线。您可以从纱线node_modules 文件夹中获取application.js.scss 中的文件,它们将包含在您的资产中。

    在这个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
    

    我快速浏览了一下,在railties/lib/rails/all.rb 中找不到与yarn 相关的任何内容,所以我决定在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\]? 祝你好运

    法布里齐奥

    【讨论】:

    • 其实,当我在config中注释(关于Uglifier)这一行时,预编译工作,资产是在/public文件夹中生成的,但是现场都无法访问......我不明白为什么资产管道现在不起作用?!我没有安装纱线,所以我不使用它就搜索解决方案...:skip_yarn 选项似乎用于不包含 node_module,但我的应用程序上没有这个。
    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2018-08-21
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2012-08-31
    相关资源
    最近更新 更多