webpack 搭建文档:https://webpack.eleven.net.cncss
须要安装的依赖包html
yarn add less less-loader css-loader style-loader postcss-loader postcss-preset-env postcss-import cssnano postcss-safe-parser mini-css-extract-plugin -D
过去版本的autoprefixer、postcss-cssnext已内置在postcss-preset-env内。
配置webpack
默认会将 css 一块儿打包到 js 里,借助 mini-css-extract-plugin 将 css 分离出来并自动在生成的 html 中 link 引入(过去版本中的 extract-text-webpack-plugin 已不推荐使用)。
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
loadergit
{ test: /\.(less|css)$/, use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'less-loader'], } // 在启用dev-server时,mini-css-extract-plugin插件不能使用contenthash给文件命名 => 因此本地起dev-server服务调试时,使用style-loader // USE_HMR是自定义的环境变量,意思是是否使用了热替换中间件 const styleLoader = process.env.USE_HMR ? 'style-loader' : MiniCssExtractPlugin.loader // 经过其余合适的方式判断是否为本地调试环境也同样,自由选择。 const styleLoader = process.env.BUILD_ENV === 'development' ? 'style-loader' : MiniCssExtractPlugin.loader { test: /\.(less|css)$/, use: [styleLoader, 'css-loader', 'postcss-loader', 'less-loader'], },
plugingithub
// 单独使用link标签加载css并设置路径,相对于output配置中的publickPath new MiniCssExtractPlugin({ filename: 'static/css/[name].[contenthash:7].css', // 注意这里使用的是contenthash,不然任意的js改动,打包时都会致使css的文件名也跟着变更。 chunkFilename: 'static/css/[name].[contenthash:7].css', })
PostCSS 自己不会对你的 CSS 作任何事情, 你须要安装一些 plugins(postcss GitHub 文档) 才能开始工做。web
在 package.json 同级目录,新建 postcss.config.js 文件:json
module.exports = { // parser: 'sugarss', // 是一个以缩进为基础的语法,相似于 Sass 和 Stylus,https://github.com/postcss/sugarss plugins: { 'postcss-import': {}, 'postcss-preset-env': {}, 'cssnano': {}, 'postcss-flexbugs-fixes': {}, } }
经常使用的插件:浏览器
其它有用的插件:sass