const { getPlatformCssnano } = require('@dcloudio/uni-cli-shared') const webpack = require('webpack') module.exports = function initCssnanoOptions (webpackConfig) { const module = webpackConfig.module // TODO 临时 hack calc:false 看看 vue cli 后续是否开放 cssnano 的配置 const cssnanoOptions = { sourceMap: false } const plugins = [require('cssnano')({ preset: ['default', getPlatformCssnano()] })] // TODO postcss-loader version > 4 if (webpack.version[0] > 4) { cssnanoOptions.postcssOptions = { plugins } } else { cssnanoOptions.plugins = plugins } module.rule('css').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('css').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('css').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('css').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('postcss').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('postcss').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('postcss').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('postcss').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('scss').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('scss').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('scss').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('scss').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('sass').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('sass').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('sass').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('sass').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('less').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('less').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('less').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('less').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('stylus').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('stylus').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) module.rule('stylus').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( cssnanoOptions) module.rule('stylus').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) }