UNPKG

rgui-tools

Version:

Developer Tools for Regular UI

102 lines (84 loc) 3.12 kB
'use strict'; const fs = require('fs'); const gulp = require('gulp'); const gulpIf = require('gulp-if'); const sequence = require('run-sequence'); const rm = require('gulp-rimraf'); const rename = require('gulp-rename'); const concatFilenames = require('gulp-concat-filenames'); const header = require('gulp-header'); const footer = require('gulp-footer'); const file = require('gulp-file'); const uglify = require('gulp-uglify'); const minifycss = require('gulp-minify-css'); const mcss = require('gulp_mcss'); const webpack = require('gulp-webpack'); const webpackConf = require('../../webpack.conf.js'); // @TODO: JS和MCSS流程统一 /** * Cache clean */ gulp.task('cache-clean', (done) => { return gulp.src('./.rgui-cache', { read: false }).pipe(rm()); }); /** * Cache JS */ gulp.task('cache-js', (done) => { const webpackConfig = webpackConf(); if (settings.watch) { webpackConfig.watch = true; webpackConfig.devtool = '#eval-source-map'; } let stream; if (settings.independent) stream = file('index.js', '', { src: true }); else { stream = gulp.src('./node_modules/rgui-*/index.js') .pipe(concatFilenames('index.js', { template: (filename) => `export * from '${filename}';`, })) .pipe(gulpIf((file) => file.isNull(), file('index.js', ''))); } stream = stream.pipe(gulpIf(fs.existsSync('./index.js'), footer(`export * from '../../index.js';\n`))) // 纯CSS库不用写index.js .pipe(gulp.dest('./.rgui-cache/js')) .pipe(webpack(webpackConfig)); if (settings.compress || settings.online) { // stream = stream.pipe(rename({ suffix: '.min' })) stream = stream.pipe(uglify()); } return stream.pipe(gulp.dest('./docs/js')); }); gulp.task('cache-js-watch', ['cache-js']); /** * Cache CSS */ gulp.task('cache-css', (done) => { let stream; if (settings.independent) stream = file('index.mcss', '', { src: true }); else { stream = gulp.src('./node_modules/rgui-*/index.mcss') .pipe(concatFilenames('index.mcss', { template: (filename) => `@import '${filename}';`, })) .pipe(gulpIf((file) => file.isNull(), file('index.mcss', ''))) } stream = stream.pipe(header(`@import 'entry-css/index.mcss';\n`)) .pipe(gulpIf(fs.existsSync('./index.mcss'), footer(`@import '../../index.mcss';\n`))) // 纯JS库不用写index.mcss .pipe(gulp.dest('./.rgui-cache/css')) .pipe(mcss({ pathes: [__dirname + '/../../node_modules/mass', __dirname, './node_modules'], importCSS: true })); if (settings.compress || settings.online) { // stream = stream.pipe(rename({ suffix: '.min' })) stream = stream.pipe(minifycss()); } return stream.pipe(gulp.dest('./docs/css')); }); gulp.task('cache-css-watch', ['cache-css'], (done) => gulp.watch('**/*.mcss', ['cache-css'])); /** * Cache */ gulp.task('cache', settings.watch ? ['cache-js-watch', 'cache-css-watch'] : ['cache-js', 'cache-css']);