使用Webpack将Sass提取为CSS

亚历克斯·艾恩赛德

第一。我知道有人问过这样的问题,但我缺少一些了解它们的内容。我正在尝试将CS​​S编译为CSS。我希望webpack基本上与做相同sass app.scss : app.css我尝试使用进行配置extract-text-webpack-plugin,但是我做错了什么或缺少了什么。

如果我include(app.scss)进入,它会起作用app.js但这没有任何意义,因为如果有人禁用了JavaScript,则样式将无法工作。

这是我的webpack.config.js档案 我不知道该怎么做。

const webpack = require("webpack");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
var jsConfig = {
  entry: "./_dev/scripts/app.js",
  output: { filename: "./scripts/bundle.js" },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: "babel-loader"
      }
    ]
  }
};

var scssConfig = {
  entry: "./_dev/scss/app.scss",
  output: { filename: "./content/app.css" },
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin({filename:"./_dev/scss/app.scss"}),
  ]
};

var config = [scssConfig, jsConfig];

module.exports = config;

编辑:我也发现了这一点。本系列文章对我所有的问题都会有所帮助,因此,如果您有类似的问题,请务必在询问之前先阅读它!

https://codeburst.io/simple-beginner-guide-for-webpack-2-0-from-scratch-part-v-495dba627718

玛格丽特克鲁

您需要包括app.scssforwebpack以便能够找到您的scss引用,因为webpack它将遍历您的项目,并将加载器应用于通过引用从app.js递归向下开始可以找到的所有文件如果您没有app.scss对项目中某处的引用,webpack则无法找到它,也无法构建它。因此,在您的项目条目(假设是app.js)中,您需要执行以下操作:

import 'relative/path/to/styles/app.scss';

但这并不意味着那些未js启用的人将不会收到您的样式。app.scss需要build在项目阶段中包含样式,之后,html即使没有js启用样式,样式也将包含在其中并被加载

webpack概念部分解释了如何webpack基于entry构建内部依赖关系图的点来查找依赖关系。


更新:

有一种方法可以让您不添加自己app.scssjs您可以在webpack配置的输入对象中包含多个文件这是您的情况下配置外观的示例:

const webpack = require("webpack");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
var config = {
  entry: {
     main: [
        "./_dev/scripts/app.js", 
        "./_dev/scss/app.scss"
     ],
  },
  output: { 
    path: './scripts',
    filename:  "bundle.js" 
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: "babel-loader"
      },
      {
        test: /\.(css|scss)/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: ['css-loader', 'sass-loader']
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin("./_dev/scss/app.scss"),
  ]
};

module.exports = config;

有关SO问题的更多信息,请参见webpack-multiple-entry-points-sass-and-js

您还对ExtractTextPluginin进行了错误的配置webpack您将整个路径放在的选项中filename,这是不正确的。在您的情况下,它应如下所示:

plugins: [
    new ExtractTextPlugin("./_dev/scss/app.css"),
  ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Webpack 4将sass编译为CSS?

使用webpack 2将.scss文件提取到.css中

如何配置的WebPack只为SASS为CSS

webpack 使用 extract-text-webpack-plugin 将 css 提取到单独的文件中

没有使用extract-text-webpack-plugin为公共块提取CSS

Angular Webpack设置:使用Webpack从CSS迁移到sass

如何使用sass / css将div的宽度设置为等于另一个div?

Webpack:将 css 提取到它自己的包中

Sass使用webpack无效

SASS Maps:可以将内容导出为CSS属性吗?

Sass与CSS模块和Webpack

提取文本插件“使用没有相应插件的加载器”-React,Sass,Webpack

如何使用webpack从.less中提取common.css?

使用Webpack提取CSS时抑制模块输出

有没有一种方法可以使用Webpack 4将CSS文件构建为CSS

使用Live Sass编译将CSS连接到CSS

Webpack加载器配置为React JS加载CSS和SASS文件

崇高地为SCSS文件使用Sass而不是CSS语法?

使用媒体查询将SASS代码保持为DRY

为什么Webpack的sass-loader在生产模式下将CSS最小化?

为没有HTML的webpack mini-css-extract-plugin提取文件创建链接标签

如何使用node-sass将scss编译为CSS

指南针CSS框架-将Bootstrap与SASS结合使用

将 CSS 重写为 SASS 问题:两个 css 文件中的相同类定义

Angular 4 webpack sass源映射文件几乎为空(使用ExtractTextPlugin)

在bash中使用jq将json值提取为数组

使用 xmlstarlet 将 xml 节点提取为表

使用jquery将id的值提取为字符串

使用ImageMagick将EXIF数据提取为文本