glup

http://www.itdecent.cn/p/cc1cb9a5650c

目前推薦在package.json配置Browserslist, 在vue官方腳手架中,browserslist字段會(huì)被 [@babel/preset-env]和 [Autoprefixer]用來(lái)確定需要轉(zhuǎn)譯的 JavaScript 特性和需要添加的 CSS 瀏覽器前綴

  • 安裝gulp

-D(等于--save-dev)
cnpm install gulp-cli -g
cnpm install gulp --save-dev

  • 安裝插件

cnpm i gulp-load-plugins -D 懶加載gulp-系列插件
cnpm i browser-sync -D 熱刷新頁(yè)面
cnpm i gulp-rename -D 文件重命名
cnpm i del -D 文件操作
cnpm install gulp-babel @babel/core @babel/preset-env -D 語(yǔ)法轉(zhuǎn)化
cnpm i gulp-concat -D js/css合并
cnpm i gulp-uglify -D js壓縮
cnpm i gulp-sass -D sass語(yǔ)法轉(zhuǎn)換,壓縮
cnpm i gulp-autoprefixer -D 自動(dòng)添加廠(chǎng)商前綴
cnpm install --save-dev gulp-browserify

  • gulp 常用命令

gulp --tasks 查看任務(wù)列表
gulp task_name 執(zhí)行指定任務(wù)
gulp 自動(dòng)執(zhí)行默認(rèn)任務(wù)

  • gulpfile.js

const {src,dest,series,watch} = require('gulp')

//可以用plugins.xx() , 省略require步驟的都是,glup- 開(kāi)頭的插件
const plugins = require('gulp-load-plugins')()
const $ = plugins
const fs = require('fs')
const del = require('del')
const browserSync = require('browser-sync')

// es6語(yǔ)法轉(zhuǎn)換es5,壓縮合并重命名xx.min.js
function script(cb){
    src('src/js/*.js')
        .pipe(plugins.babel({
            presets: ['@babel/env']
        }))
        .pipe(plugins.concat('build.js'))
        .pipe(plugins.rename({
            suffix: '.min'
        }))
        .pipe(plugins.uglify())
        .pipe(dest('dist/js'))
        .pipe(browserSync.reload({stream:true}))
    fs.access('gulpfile.js', cb)
}

//清除構(gòu)建的文件
function clean(cb){
    del('dist/css')
    del('dist/js')
    fs.access('gulpfile.js', cb)
}
//scss文件編譯,壓縮,自動(dòng)添加廠(chǎng)商前綴, 記得設(shè)置package.json里的browserslist
function css(cb){
    src('src/scss/*.scss')
        .pipe(plugins.sass({outputStyle: 'compressed'}).on('error', plugins.sass.logError))
        .pipe($.autoprefixer({
            cascade: false,//對(duì)自動(dòng)添加的廠(chǎng)商前綴,是否設(shè)置視覺(jué)效果更好的縮進(jìn) 
            remove: false//刪除過(guò)時(shí)的前綴
        }))
        .pipe(dest('dist/css'))
        .pipe(browserSync.reload({stream:true}))
    fs.access('gulpfile.js',cb)
}
//監(jiān)聽(tīng)文件變化
function watcher(cb){
    watch('src/js/*.js',script)
    watch('src/scss/*.scss',css)
    fs.access('gulpfile.js',cb)  
}
//熱更新
function serve(cb){
  browserSync.init({
    server: {
      baseDir: 'dist'
    }
  })
  cb()
}
exports.script = script
exports.clean = clean
exports.css = css
exports.watcher = watcher
exports.default=series([
  clean,
  script,
  css,
  serve,
  watcher
])
  • 舊版task函數(shù)方式
const gulp = require('gulp')
const {src,dest,task,series} = require('gulp')
const concat = require('gulp-concat')
const uglify = require('gulp-uglify')
const rename = require('gulp-rename')
const less = require('gulp-less')
const cleanCss = require('gulp-clean-css')
const autoprefixer = require('gulp-autoprefixer')

task('js',function(){
  return src('src/js/*.js')
          .pipe(concat('build.js'))
          .pipe(uglify())
          .pipe(rename({suffix:'.min'}))
          .pipe(dest('dist/js'))
})
task('less',function(){
  return src('src/less/*.less')
          .pipe(less())
          .pipe(dest('src/css'))
})
task('css',function(){
  return src('src/css/*.css')
          .pipe(concat('build.css'))
          .pipe(rename({suffix:'.min'}))
          .pipe(autoprefixer({
              cascade: false,//對(duì)自動(dòng)添加的廠(chǎng)商前綴,是否設(shè)置視覺(jué)效果更好的縮進(jìn) 
              remove: false//刪除過(guò)時(shí)的前綴
          }))
          .pipe(cleanCss())//壓縮css文件 兼容ie8
          .pipe(dest('dist/css'))
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容