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