/** layuiAdmin pro 构建 */ var pkg = require('./package.json'); var inds = pkg.independents; var gulp = require('gulp'); var uglify = require('gulp-uglify'); var minify = require('gulp-minify-css'); var concat = require('gulp-concat'); var rename = require('gulp-rename'); var replace = require('gulp-replace'); var header = require('gulp-header'); var del = require('del'); var gulpif = require('gulp-if'); var minimist = require('minimist'); var sass = require('gulp-sass'); var autoPreFixer = require('gulp-autoprefixer'); sass.compiler = require('node-sass'); var px2rem = require('gulp-px2rem'); //获取参数 var argv = require('minimist')(process.argv.slice(2), { default: { ver: 'all' } }) //注释 , note = [ '/** <%= pkg.name %>-v<%= pkg.version %> <%= pkg.license %> License By <%= pkg.homepage %> */\n <%= js %>' , { pkg: pkg, js: ';' } ] , destDir = './dist' //构建的目标目录 , releaseDir = '../pack/layuiAdmin.pack/' + pkg.name + '-v' + pkg.version //发行版本目录 //任务 , task = { //压缩 JS minjs: function () { var src = [ './src/**/*.js' , '!./src/config.js' , '!./src/lib/extend/echarts.js' ]; return gulp.src(src).pipe(uglify()) .pipe(header.apply(null, note)) .pipe(gulp.dest(destDir)); } //压缩 CSS , mincss: function () { var src = [ './src/**/*.css' ] , noteNew = JSON.parse(JSON.stringify(note)); noteNew[1].js = ''; return gulp.src(src).pipe(minify({ compatibility: 'ie7' })).pipe(header.apply(null, noteNew)) .pipe(gulp.dest(destDir)); } //复制文件夹 , mv: function () { gulp.src('./src/config.js') .pipe(gulp.dest(destDir)); gulp.src('./src/lib/extend/echarts.js') .pipe(gulp.dest(destDir + '/lib/extend')); gulp.src([ './src/style/**/*', '!./src/style/css/**/*', ]) .pipe(gulp.dest(destDir + '/style')); return gulp.src('./src/views/**/*') .pipe(gulp.dest(destDir + '/views')); } }; //清理 gulp.task('clear', function (cb) { return del(['./dist/*'], cb); }); gulp.task('clearRelease', function (cb) { return del(['./json/*', releaseDir], cb); }); gulp.task('minjs', task.minjs); gulp.task('mincss', task.mincss); gulp.task('mv', task.mv); gulp.task('src', function () { //命令:gulp src return gulp.src('./dev-pro/**/*') .pipe(gulp.dest('./src')); }); //构建核心源文件 gulp.task('default', ['clear', 'src'], function () { //命令:gulp for (var key in task) { task[key](); } }); //发行 - layuiAdmin 官方使用 gulp.task('release', function () { //命令:gulp && gulp release //复制核心文件 gulp.src('./dist/**/*') .pipe(gulp.dest(releaseDir + '/dist')); gulp.src('./src/**/*') .pipe(gulp.dest(releaseDir + '/src')); //复制 json gulp.src('./dev/json/**/*') .pipe(gulp.dest('./json')) .pipe(gulp.dest('./start/json')) .pipe(gulp.dest(releaseDir + '/start/json')); //复制并转义宿主页面 gulp.src('./dev/index.html') .pipe(replace(/\<\!-- clear s --\>([\s\S]*?)\<\!-- clear e --\>/, '')) .pipe(replace('//local.res.layui.com/layui/src', 'layui')) .pipe(replace("base: '../dev-pro/'", "base: '../dist/'")) .pipe(replace('@@version@@', pkg.version)) .pipe(gulp.dest('./start')) .pipe(gulp.dest(releaseDir + '/start')); //复制帮助文件 gulp.src([ './帮助/*' , '!./帮助/说明.txt' ]).pipe(gulp.dest(releaseDir + '/帮助')); gulp.src([ './帮助/说明.txt' ]).pipe(gulp.dest(releaseDir)); //复制 gulpfile gulp.src([ 'gulpfile.js' , 'package.json' ]).pipe(gulp.dest(releaseDir)); //说明 gulp.src('../pack/说明.txt') .pipe(gulp.dest('../pack/layuiAdmin.pack')); //复制 layui return gulp.src('../../../../res/layui/rc/**/*') .pipe(gulp.dest('./start/layui')) .pipe(gulp.dest(releaseDir + '/start/layui')) }); // 编译sass zx gulp.task('base', function () { gulp.src('src/style/css/scss/**/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(replace('../../../font', '../font')) .pipe(replace('../../../img', '../img')) .pipe(replace('../../img', '../img')) .pipe(autoPreFixer({ overrideBrowserslist: [ 'last 2 versions', 'not ie <= 8', 'iOS >= 9', 'Android >= 4.0', 'since 2013' ], grid: true })) // .pipe(px2rem({ // replace: true, // rootValue: 37.5 // })) .pipe(concat('main.css')) .pipe(gulp.dest('src/style/css')); }); gulp.task('w', function () { gulp.watch('src/style/css/scss/**/*.scss', ['base']); });