插件如Autoprefixer、cssnano、PreCSS等,分别负责添加浏览器前缀、压缩CSS、支持Sass/Less-like语法等功能。 // postcss.config.jsmodule.exports = { plugins: [ 'autoprefixer', ['cssnano', { preset: 'default src/style.css --use autoprefixer cssnano precss -o dist/style.cssNode.js API在Node.js项目中直接调用PostCSS API = require('cssnano');const precss = require('precss');postcss([autoprefixer, cssnano, precss]) .process = require('cssnano');const precss = require('precss');function processCSS() { return gulp.src('src/
webpack使用postcss的autoprefixer插件,并在压缩css时使用了cssnano,处理不当的情况下会导致压缩css后,部分兼容前缀(比如-webkit-)被删除的问题。 进行压缩,而cssnano会使用到autoprefixer进行无关前缀的清理。 上面有提到,cssnano会使用autoprefixer自动清除掉一些他认为不重要的前缀。而OptimizeCssAssetsPlugin中默认了是使用cssnano。 所以我们主动关闭cssnano的autoprefixer功能即可,因为我们已经在postcss中使用了autoprefixer插件,这里无需重复使用。 的大小 //cssnano 集成了autoprefixer的功能。
"^2.26.7", "gulp": "^4.0.2", "gulp-cache": "^1.1.2", "gulp-concat": "^2.6.1", "gulp-cssnano "^2.26.7", "gulp": "^4.0.2", "gulp-cache": "^1.1.2", "gulp-concat": "^2.6.1", "gulp-cssnano 3.2.编写gulpfile.js文件 gulp.js var gulp = require("gulp"); var cssnano = require("gulp-cssnano"); var rename /src/css/*.scss") .pipe(sass().on("error",sass.logError)) .pipe(cssnano()) //压缩 .pipe(rename *",gulp.series('images')); }); var gulp = require("gulp"); var cssnano = require("gulp-cssnano"); var
important 后依然无效,查资料发现是 OptimizeCssAssetsPlugin 调用 cssProcessor cssnano 对 z-index 进行了重新计算导致的。 解决方案 解决方案按照网上的资料,可以在 OptimizeCssAssetsPlugin 插件中关掉 cssnano 对 z-index 的重新计算(cssnano 称为 rebase)。 : {removeAll: true}, // 避免 cssnano 重新计算 z-index safe: true }, canPrint: false }) cssnano 将 z-index rebase 归类为 unsafe,只有在单个网页的 css 全部写入一个 css 文件,并且不通过 JavaScript 进行改动时是 safe。 参考: http://cssnano.co/optimisations/zindex/ cssnano 默认进行 z-index rebase。
= require("gulp"); var cssnano = require("gulp-cssnano") gulp.task("greet",done => { console.log /css/*.css") .pipe(cssnano()) .pipe(gulp.dest(". /css/*.css") .pipe(cssnano()) .pipe(rename({"suffix":".min"})) .pipe(gulp.dest(". /css/*.css") .pipe(cssnano()) .pipe(rename({"suffix":".min"})) .pipe(gulp.dest(". /css/*.css") .pipe(cssnano()) .pipe(rename({"suffix":".min"})) .pipe(gulp.dest(".
压缩css npm install gulp-cssnano --save -dev 在本地项目安装gulp-cssnano 新建一个css文件夹,在新建index.css *{ margin var cssnano = require('gulp-cssnano'); // 定义一个处理css文件改动的任务 gulp.task('css',function(){ gulp.src /css/*.css') .pipe(cssnano()) .pipe(gulp.dest(". var cssnano = require('gulp-cssnano'); var rename = require('gulp-rename') // 定义一个处理css文件改动的任务 gulp.task /css/*.css') .pipe(cssnano()) // 将index.css生成index.min.css .pipe(rename({"suffix":".min"
peer webpack@"^4.0.0" from @intervolga/optimize-cssnano-plugin@1.0.6 npm ERR! node_modules/@intervolga/optimize-cssnano-plugin npm ERR! @intervolga/optimize-cssnano-plugin@"^1.0.5" from @vue/cli-service@4.5.15 npm ERR!
/ 在gulpfile中先载入gulp包,因为这个包提供了一些API var gulp = require('gulp'); var less = require('gulp-less'); var cssnano = require('gulp-cssnano'); // 1. src/styles/_*.less']) .pipe(less()) .pipe(cssnano()) .pipe(gulp.dest('dist/styles')) html']); }); 附录: gulp常用插件: gulp-less:编译less gulp-concat:合并代码 gulp-uglify:压缩js文件 gulp-rename:重命名文件 gulp-cssnano
1.安装插件 npm i optimize-css-assets-webpack-plugin cssnano -D 由于optimize-css-assets-webpack-plugin插件配置时依赖 cssnano预处理器,所以需要一起安装。 MiniCssExtractPlugin = require('mini-css-extract-plugin'); // npm i optimize-css-assets-webpack-plugin cssnano OptimizeCSSAssetsPlugin({ assetNameRegExp: /\.css$/g, cssProcessor: require('cssnano OptimizeCSSAssetsPlugin({ assetNameRegExp: /\.css$/g, cssProcessor: require('cssnano
[name]-[contenthash:6].css", }), new OptimizeCSSAssetsPlugin({ cssProcessor: require("cssnano "), // 这里制定了引擎,不指定默认也是 cssnano }), new PurifyCSS({ paths: glob.sync([ // 要做 CSS require("autoprefixer")({ overrideBrowserslist: ["last 2 versions", ">1%"], }), // require("cssnano
gulp-concat": "^2.6.1", "gulp-concat-folders": "^1.3.1", "gulp-connect": "^5.5.0", "gulp-cssnano 2.24.4 -g npm install browser-sync@2.24.4 --save-dev gulp监听任务 依赖包引用 var gulp=require('gulp'); var cssnano =require('gulp-cssnano'); var rename=require('gulp-rename'); var uglify=require('gulp-uglify'); var concat gulp.task('css',function(){ gulp.src(paths.css+"*.scss") .pipe(sass().on('error',sass.logError)) .pipe(cssnano
都具有autoprefixer,事实上只需要一个,所以把默认的autoprefixer删除掉,然后把cssnano中的autoprefixer设置为false。 cssnano cssnano主要用来压缩和清理CSS代码。在Webpack中,cssnano和css-loader捆绑在一起,所以不需要自己加载它。 不过你也可以使用postcss-loader显式的使用cssnano。有关于cssnano的详细文档,可以点击这里获取。 在cssnano的配置中,使用了preset: "advanced",所以我们需要另外安装: npm i cssnano-preset-advanced --save-dev 1 cssnano 集成了一些其他的PostCSS插件,如果你想禁用cssnano中的某个插件的时候,可以像下面这样操作: "cssnano": { autoprefixer: false, "postcss-zindex
style-loader css-loader sass-loader sass fibers vue-loader @vue/compiler-sfc postcss-loader autoprefixer cssnano sass, fibers CSS加载(此处使用sass预处理) vue-loader, @vue/compiler-sfc Vue加载 postcss-loader, autoprefixer, cssnano postcss加载 配置postcss 在 postcss.config.js中配置 autoprefixer用于给css加前缀, cssnano用于压缩优化css module.exports = { plugins: [ require('autoprefixer'), require('cssnano')({ preset: 'default' })
*map)/g, //注意不要写成 /\.css$/g cssProcessor: require('cssnano'), cssProcessorOptions : { discardComments: {removeAll: true}, // 避免 cssnano 重新计算 z-index safe: true, // cssnano 集成了autoprefixer的功能 // 会使用到autoprefixer进行无关前缀的清理
这对减少代码尺寸和代码性能都是有好处的:) 使用工具压缩优化代码 在当今HTML5等Web前端项目的开发和发布中,我们通常会通过使用一些前端工程化工具来处理我们的代码,比如使用Gulp,结合一些功能插件,如:uglify, cssnano 对JS代码进行语法优化和文本压缩 WXML文件 使用htmlmin,可以对WXML文件中多余的空格,注释等进行清理 WXSS文件 可以使用LESS提供的特性,对小程序中的全局WXSS进行合并;使用cssnano babel-preset-latest": "^6.16.0", "del": "^2.2.2", "gulp": "^3.9.1", "gulp-babel": "^6.1.2", "gulp-cssnano autoprefixer([ 'iOS >= 8', 'Android >= 4.1' ]) ])) .pipe($.if(prod, $.cssnano
*map)/g, //注意不要写成 /\.css$/g cssProcessor: require('cssnano'), cssProcessorOptions : { discardComments: {removeAll: true}, // 避免 cssnano 重新计算 z-index safe: true, // cssnano 集成了autoprefixer的功能 // 会使用到autoprefixer进行无关前缀的清理
postcss-vmin 使用 vm 为 vmin 做降级处理,IE9+ pixrem 给 rem 添加 px 作为降级处理,IE8+ postcss-import 使用 @import 合并样式表 cssnano = require('cssnano'), fontMagician = require('postcss-font-magician'), config , pseudoelements, vmin, pixrem, atImport, mqpacker, cssnano = require('cssnano'), config = require('../.. /config').sass; gulp.task('sass',() => { const processors = [ autoprefixer, cssnano
.html文件中使用@apply仍提示未知规则,建议在已安装以上插件后再添加工作区配置禁止掉这个提示: { "css.lint.unknownAtRules": "ignore" } 安装 cssnano 压缩 css: yarn add -D cssnano 配置插件: module.exports = { plugins: { // 其他插件 // cssnano 按需加到插件列表末尾 { cssnano: {} } : {}) }, } 浏览器支持状况: 在Chrome、Firefox、Edge 和 Safari 的最新稳定版本适配良好,但由于部分API不支持IE全部版本,所以强烈不建议在
//安装插件 npm install gulp-imagemin --save-dev //图片压缩 npm install gulp-cssnano --save-dev //css压缩 npm install 文件合并 npm install gulp-rename --save-dev //重命名 //gulpfile.js //引入插件 var gulp = require('gulp'), cssnano = require('gulp-cssnano'), concat = require('gulp-concat'), jshint = require('gulp-jshint'), pipe(concat('merge.css')) .pipe(rename({ suffix: '.min' })) .pipe(cssnano
OptimizeCssAssetsPlugin({ assetNameRegExp: /\.optimize\.css$/g, cssProcessor: require('cssnano OptimizeCssAssetsPlugin({ assetNameRegExp: /\.optimize\.css$/g, cssProcessor: require('cssnano OptimizeCssAssetsPlugin({ assetNameRegExp: /\.optimize\.css$/g, cssProcessor: require("cssnano