今天看啥  ›  专栏  ›  summer2019

webpack之样式文件相关

summer2019  · 掘金  ·  · 2019-08-28 02:18
阅读 10

webpack之样式文件相关

什么是loader

loader 用于对模块的源代码进行转换
loader 可以使你在 import 或"加载"模块时预处理文件
因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法
loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL
loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!
复制代码

介绍

webpack提供两个工具处理样式表,css-loader 和 style-loader

二者处理的任务不同,css-loader使你能够使用类似@import 和 url(…)的方法实现 require()的功能;style-loader将所有的计算后的样式加入页面中,二者组合在一起使你能够把样式表嵌入webpack打包后的JS文件中  

用 css-loader 和 style-loader 处理 CSS
复制代码

css-loader

css-loader是允许在js中import一个css文件,会将css文件当成一个模块引入到js文件中。
复制代码

style-loader

style-loader能够在需要载入的html中创建一个<style></style>标签,标签里的内容就是CSS内容
复制代码

file-loader

生成一个新的css文件
复制代码

style-loader/useable

在style中控制样式插入或者不插入,import了css后可以使用 .use() 或者 .unuse()的方法来控制样式是否插入    
复制代码

style-loader/url

 在html中插入一个link标签(配合file-loader使用),一个很小众的功能,会把每个import的css都处理成一个link标签,造成加载资源的增加,不利于优化
复制代码

用 css-loader 和 style-loader 处理 CSS

1. 安装

cnpm install css-loader style-loader --save-dev
复制代码

2. 配置

//配置css加载器
{
  test: /\.css$/,
  use: [
    'style-loader',
    'css-loader'
  ]
}


或者这样配置
 {
    test: /\.css$/,
    use: [
      {
        loader: 'style-loader' //使用style-loader进行处理,位置必须在css-loader前面
      },
      {
        loader: 'css-loader'
      }
    ],
  },
复制代码

3. 在index.js中引入css文件即可

import '../css/index.css'    
复制代码



用 sass-loader 把 SASS 编译成 CSS

1. 安装

cnpm install sass-loader node-sass --save-dev    
复制代码

2. 配置

//配置sass
{
  test: /\.scss$/,
  use: ['style-loader', 'css-loader', 'sass-loader']
}
复制代码

3 在index.js中引入scss文件即可

import '../css/index.scss'
复制代码



将css文件从js中分离出来

1. 安装

cnpm install --save-dev mini-css-extract-plugin
复制代码

2. 配置

const MiniCssExtractPlugin = require('mini-css-extract-plugin')

//插件配置
new MiniCssExtractPlugin({
  // Options similar to the same options in webpackOptions.output
  // all options are optional
  filename: 'skin/[name]/css/[name].css',
  chunkFilename: '[id].css',
  ignoreOrder: false, // Enable to remove warnings about conflicting order
}),


//规则配置
  {
    test: /\.css$/,
    use: [
      {
        loader: MiniCssExtractPlugin.loader,
        options: {
          publicPath: '../',
          hmr: process.env.NODE_ENV === 'development',
        },
      },
      'css-loader',
    ],
  },
  //配置sass
  {
    test: /\.scss$/,
    use: [
      {
        loader: MiniCssExtractPlugin.loader,
        options: {
          publicPath: '../',
          hmr: process.env.NODE_ENV === 'development',
        },
      },
      'css-loader',
      'sass-loader'
    ],
  }
复制代码



postcss-loader自动添加厂商前缀

1. 在此之前先确保已经安装style-loader

cnpm install postcss-loader autoprefixer --save-dev
复制代码

www.cnblogs.com/RoadAspenBK…




原文地址:访问原文地址
快照地址: 访问文章快照