Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 6.1不带资产管道的sass加载程序(webpacker) 使用Rails 6.1和sass loader自动包含所有嵌套的SCSS文件_Ruby On Rails_Webpacker_Sass Loader_Sass Globbing - Fatal编程技术网

Ruby on rails Rails 6.1不带资产管道的sass加载程序(webpacker) 使用Rails 6.1和sass loader自动包含所有嵌套的SCSS文件

Ruby on rails Rails 6.1不带资产管道的sass加载程序(webpacker) 使用Rails 6.1和sass loader自动包含所有嵌套的SCSS文件,ruby-on-rails,webpacker,sass-loader,sass-globbing,Ruby On Rails,Webpacker,Sass Loader,Sass Globbing,在Rails 6.0.3.4中,可以使用Sass加载程序对所有SCSS文件进行全局加载,而无需手动包含每个文件 问题-语法v7 这在Rails 6.1中失败,出现以下webpacker错误(对于webpacker配置,请参见下文,.options={importer:globImporter()};//sass加载程序v7的语法) 问题-语法v8 如果将配置更改为sass loader v8语法(.sassOptions={importer:globImporter()};),则会出现不同的错误

在Rails 6.0.3.4中,可以使用Sass加载程序对所有SCSS文件进行全局加载,而无需手动包含每个文件

问题-语法v7 这在Rails 6.1中失败,出现以下webpacker错误(对于webpacker配置,请参见下文,
.options={importer:globImporter()};//sass加载程序v7的语法

问题-语法v8 如果将配置更改为sass loader v8语法(
.sassOptions={importer:globImporter()};
),则会出现不同的错误:

Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
 - configuration.module.rules[2].use[3] has an unknown property 'sassOptions'. These properties are valid:
   object { ident?, loader?, options?, query? }
问题: 如何使用Rails 6.1和sass loader v8配置它

6.1版本之前的原始工作配置:
  • 纱线添加节点sass glob导入器
    ,Rails 6.1使用
    sass-loader@8.0.2
  • 调整网页包配置以传递加载程序选项:
  • #config/webpack/environment.js
    const{environment}=require('@rails/webpacker')
    const globImporter=require('node-sass-glob-importer');
    环境
    .装载机
    .get('sass'))
    .使用
    .find(item=>item.loader=='sass loader')
    .options={importer:globImporter()};//sass加载程序v7的语法
    //.sassOptions={importer:globImporter()};//对于v8发动机
    module.exports=环境
    
  • 然后在
  • //app/javascript/packs/application.scss
    导入“/application.scss”;
    
  • 最后在
  • //app/javascript/packs/application.scss
    @导入“../stylesheets/***/.scss”;
    

    然后,
    app/javascript/packs
    下的所有嵌套SCSS样式表将自动全局化。

    找到了解决方案。对于Rails 6.1,您需要以下
    environment.js
    webpacker配置:

    const{environment}=require(“@rails/webpacker”)
    const globImporter=require('node-sass-glob-importer');
    环境
    .装载机
    .get('sass'))
    .使用
    .find(item=>item.loader=='sass loader')
    .options={sassOptions:{importer:globImporter()}}//
    
    Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
     - configuration.module.rules[2].use[3] has an unknown property 'sassOptions'. These properties are valid:
       object { ident?, loader?, options?, query? }