美文网首页饥人谷技术博客让前端飞web前端技术分享
使用gulp给css添加前缀以支持多浏览器(附源码)

使用gulp给css添加前缀以支持多浏览器(附源码)

作者: 阿巳交不起水电费 | 来源:发表于2022-02-18 09:25 被阅读0次

之前遇到这样一个需求:已经运行的老项目(是用jquery开发的多页面)之前只是兼容chrome,现在样式需要兼容ie10+,safari等浏览器。因为less、css文件太多,一个一个手动添加前缀等不太现实,因为不需要重新编译js等其他资源,也不需要入口文件,因此没有使用webpack,而是使用更简单的gulpgulp中文官网

目录结构如下:

image.png

gulpfile.js

const gulp = require('gulp');

const pump = require('pump') // 辅助模块pump可以使我们更容易找到代码出错位置.

// 添加css前缀,postcss算是一种平台,可以使用插件来处理css,它提供了一个解释器,能够将css解释为抽象语法树
// const autoprefixer = require('gulp-autoprefixer'); // 不使用postcss直接使用gulp-autoprefixer也可以
const postcss = require('gulp-postcss'); // 使用postcss加载autoprefixer等插件更好,推荐使用
const autoprefixer = require('autoprefixer');

const less = require('gulp-less');
const sass = require('gulp-sass')(require('sass'));

const clean = require('gulp-clean');// 清理文件或文件夹

let _src = '../www/static/css/'

let _output = './dist/'

gulp.task('clean', function () {
    // task任务里要加上return 不然还是会异步执行
   return gulp.src(_output, {read: false})
        .pipe(clean());
})

// 公共处理css前缀方法
let afn = function () {
    return postcss([
        autoprefixer({
            overrideBrowserslist: ['last 2 versions', 'iOS >= 8', 'Firefox >= 20', 'Android > 4.0'],
            cascade: true //是否美化属性值 默认:true 像这样:
        })
    ])
}

// 编译css
gulp.task('css', function () {
    return gulp.src(_src + '*.css')
        .pipe(afn())
        .pipe(gulp.dest(_output));
});

// 编译less
gulp.task('less', function () {
    return gulp.src(_src + '*.less')
        .pipe(less())
        .pipe(afn())
        .pipe(gulp.dest(_output));
});

// 编译sass
gulp.task('sass', function () {
    return gulp.src(_src + '*.scss')
        .pipe(sass())
        .pipe(afn())
        .pipe(gulp.dest(_output));
});

gulp.task('default', gulp.series('clean','css', // 先执行css,后面若less或者sass生成了同名文件将覆盖,less,sass生成的文件优先级最高
    gulp.parallel('less', 'sass'),
));

package.json

{
  "name": "y",
  "version": "1.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "clean": "gulp clean",
    "build": "gulp default"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "gulp": "^4.0.2",
    "gulp-autoprefixer": "^8.0.0",
    "gulp-clean": "^0.4.0",
    "gulp-less": "^5.0.0",
    "gulp-postcss": "^9.0.1",
    "gulp-sass": "^5.0.0",
    "pump": "^3.0.0"
  },
  "dependencies": {
    "autoprefixer": "^10.4.0",
    "sass": "^1.43.4"
  }
}
image.png

执行:

cd css编译 // 进入编译目录
npm i // 安装依赖
npm run build // 开始编译

整个编译思路就是将www/static/css里面的css、sass、less生成到编译目录里的dist目录,可以根据需求自行修改。

相关文章

  • 使用gulp给css添加前缀以支持多浏览器(附源码)

    之前遇到这样一个需求:已经运行的老项目(是用jquery开发的多页面)之前只是兼容chrome,现在样式需要兼容i...

  • 常用gulp插件

    sass的编译(gulp-sass)自动添加css前缀(gulp-autoprefixer)压缩css(gulp-...

  • Gulp

    自动给CSS加前缀 Autoprefixer CSS onlinefilter选择支持最近的几个浏览器版本/---...

  • 10-CSS3新特性

    CSS3简介 CSS3的现状 浏览器支持程度差,需要添加 私有前缀 ; 移动端支持优于PC端; 不断改进中; 应用...

  • 自动化构建

    webpack、gulp、grunt都可以实现css3属性前缀的自动化添加

  • css自定义变量

    css是可以支持变量,且所有主流浏览器都支持。css变量又称"css自定义属性",css的变量声明是以“--”前缀...

  • gulp实现前端自动化

    gulp是基于node的前端工具,可以对代码压缩,自动刷新页面,编译各种预处理器,给css加浏览器前缀,加版本号,...

  • gulp打包构建项目要思考的问题

    项目构建打包要做哪些事情css加前缀gulp-autoprefixerless转cssgulp-less多文件合并...

  • webpack常用loader

    postcss -loader 打包css样式,自动添加前缀 直接在匹配css文件下,添加使用这个loader就可...

  • gulp配置

    一、组件 1、gulp-concat 代码合并 2、gulp-autoprefixer:css代码自动补全前缀 3...

网友评论

    本文标题:使用gulp给css添加前缀以支持多浏览器(附源码)

    本文链接:https://www.haomeiwen.com/subject/xiielrtx.html