UNPKG

octopus-ad

Version:

Quickapp Sample Template

89 lines (74 loc) 2.69 kB
const { src, dest, series } = require('gulp'); const { join } = require('path'); const fs = require('fs'); const gulpClean = require('gulp-clean'); const gulpCleanCss = require('gulp-clean-css'); const gulpUglify = require('gulp-uglify'); const gulpBabel = require('gulp-babel'); const gulpCopy = require('gulp-copy'); const componentPath = './src/components'; const packagePath = './components'; // 清理打包后的文件夹 const clean = () => { return src(packagePath, { read: false, allowEmpty: true }) .pipe(gulpClean()); }; // 重建文件夹 const mkdir = (cb) => { fs.mkdirSync(join(packagePath)); fs.mkdirSync(join(packagePath, 'style')); fs.mkdirSync(join(packagePath, 'utils')); fs.mkdirSync(join(packagePath, 'images')); cb(); }; // babel,压缩js const uglifyJs = () => { return src(join(componentPath, 'utils/*.js')) .pipe(gulpBabel({ presets: ['@babel/env'] })).pipe(gulpUglify()).pipe(dest(join(packagePath, 'utils'))); } // 压缩css const cleanCss = () => { return src(join(componentPath, 'style/*.css')) .pipe(gulpCleanCss()).pipe(dest(join(packagePath, 'style'))); } // 压缩并复制ux文件 const copyUx = () => { return src(join(componentPath, '**/*.ux')) // .pipe(through2.obj(function(file, _, cb) { // // 去除文件中的换行,注释 // const content = file.contents.toString().replace(/\n/g, ''); // file.contents = Buffer.from(content); // cb(null, file); // })) .pipe(dest(join(packagePath))); } const copyImages = () => { return src(join(componentPath, 'images/**/*')) .pipe(gulpCopy( join(packagePath, 'images'), { prefix: 3 } )) .pipe(dest(join(packagePath, 'images'))); } // 打包前修改package.json,区分发布与本地开发 const prePublish = (cb) => { const packageJson = require('./package.json'); const publishJson = require('./package.publish.json'); fs.writeFileSync('./package.json', JSON.stringify(publishJson, null, 2)); fs.writeFileSync('./package.publish.json', JSON.stringify(packageJson, null, 2)); cb() } const afterPublished = (cb) => { const packageJson = require('./package.json'); const publishJson = require('./package.publish.json'); fs.writeFileSync('./package.json', JSON.stringify(publishJson, null, 2)); fs.writeFileSync('./package.publish.json', JSON.stringify(packageJson, null, 2)); cb() } const build = series(clean, mkdir, copyUx, copyImages, uglifyJs, cleanCss); exports.prepublish = series(build, prePublish,) exports.published = series(afterPublished); exports.default = series(build);