ruby-on-rails - 如何在 webpacker Angular Rails 中添加 scss 加载器?

标签 ruby-on-rails angular webpack sass

我正在尝试用 Angular 研究 Rails,但我喜欢实现 scss-loader。我已经在谷歌中搜索到了这个。我已经添加了他们想要做的事情,但不幸的是没有发生任何事情,我总是收到此错误 “”后的 CSS 无效:预期有 1 个选择器或 at 规则,为“var content = requi”

我添加了scss.d.ts

declare module "*.scss" {
    const content: string
    export default content
  }

这是我的环境.js

const { environment } = require('@rails/webpacker')

const typescript =  require('./loaders/typescript')

environment.loaders.prepend('typescript', typescript)

environment.loaders.prepend('html', {
    test: /\.html$/,
    use: [{
      loader: 'html-loader',
      options: {
        minimize: true,
        removeAttributeQuotes: false,
        caseSensitive: true,
        customAttrSurround: [ [/#/, /(?:)/], [/\*/, /(?:)/], [/\[?\(?/, /(?:)/] ],
        customAttrAssign: [ /\)?\]?=/ ]
      }
    }]
  })

environment.loaders.prepend('style', {
  test: /\.(scss|sass|css)$/,
  use: [{
      loader: "to-string-loader"
  }, {
      loader: "css-loader"
  }, {
      loader: "resolve-url-loader"
  }, {
      loader: "sass-loader"
  }]
})

module.exports = environment

甚至添加一个stylesheet_pack_tag

<%= stylesheet_pack_tag 'application' %>
<div>
<default-selector></default-selector>
</div>
<%= javascript_pack_tag 'application' %>

我遇到错误。我的 sass-loader 版本在这里重要吗?

{
  "name": "acbook_angular",
  "private": true,
  "dependencies": {
    "@angular/common": "^7.2.8",
    "@angular/compiler": "^7.2.8",
    "@angular/core": "^7.2.8",
    "@angular/platform-browser": "^7.2.8",
    "@angular/platform-browser-dynamic": "^7.2.8",
    "@angular/router": "^7.2.10",
    "@rails/webpacker": "^4.0.2",
    "core-js": "^2.6.5",
    "html-loader": "^0.5.5",
    "rxjs": "^6.4.0",
    "ts-loader": "^5.3.3",
    "typescript": "^3.3.3333",
    "zone.js": "^0.8.29"
  },
  "devDependencies": {
    "css-loader": "^2.1.1",
    "resolve-url-loader": "^3.0.1",
    "sass-loader": "^7.1.0",
    "to-string-loader": "^1.1.5",
    "webpack-dev-server": "^3.2.1",
    "webpack-merge": "^4.2.1"
  }
}

最佳答案

我已经通过更换环境解决了这个问题

environment.loaders.prepend('style', {
  test: /\.(scss|sass|css)$/,
  use: [{
      loader: "to-string-loader"
  }, {
      loader: "css-loader"
  }, {
      loader: "resolve-url-loader"
  }, {
      loader: "sass-loader"
  }]
})

到此

environment.loaders.insert('sass', {
    test: /\.scss$/,
    use: [
        "to-string-loader", // creates style nodes from JS strings
        "css-loader", // translates CSS into CommonJS
        "sass-loader" // compiles Sass to CSS
    ]
});

感谢您 link

关于ruby-on-rails - 如何在 webpacker Angular Rails 中添加 scss 加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55437173/

相关文章:

ruby-on-rails - 名称错误 : uninitialized constant when trying to execute rails tests

ruby-on-rails - 如何在 simple_form group_method 中传递参数?

ruby-on-rails - Windows 7 x64 上的 Ruby on Rails SQLite 问题

ruby-on-rails - 如何使用Rails i18n后备功能

angular - 如何使用 Angular 在 HMR 期间保留状态

angular - 使用 Angular 2 的 HTML5 事件处理(onfocus 和 onfocusout)

angular - 如何在 Angular 5 中不使用 *ngFor 将数据从父组件发送到子组件

webpack - 如何构建需要不同 webpack 版本的不同项目?

heroku - 使用 @sentry/webpack-plugin 和 heroku 的 Sentry

javascript - Webpack 错误 - configuration.node 具有未知属性 'fs'