rebuild/.production/gulpfile.js

62 lines
2.1 KiB
Java
Raw Normal View History

2018-11-17 21:15:55 +08:00
const gulp = require('gulp')
const babel = require('gulp-babel')
const uglify = require('gulp-uglify')
2018-11-21 02:32:01 +08:00
const cleanCss = require('gulp-clean-css')
2018-11-17 21:15:55 +08:00
const rename = require('gulp-rename')
const replace = require('gulp-replace')
const debug = require('gulp-debug')
2018-11-20 00:04:37 +08:00
const cleanhtml = require('gulp-cleanhtml')
2018-11-21 02:32:01 +08:00
const babelCore = require('@babel/core')
const rev = require('gulp-rev')
const revReplace = require('gulp-rev-replace')
2018-11-17 21:15:55 +08:00
2018-11-21 02:32:01 +08:00
// ES6 > ES5 & compress js
gulp.task('cjs', () => {
2018-11-17 21:15:55 +08:00
return gulp.src('../src/main/webapp/assets/js/**/*.js?(x)')
2018-11-21 02:32:01 +08:00
.pipe(gulp.dest('./_temp/es6'))
2018-11-17 21:15:55 +08:00
.pipe(babel())
2018-11-21 02:32:01 +08:00
.pipe(gulp.dest('./_temp/es5'))
.pipe(uglify())
.pipe(debug({ title: 'compress js file : ' }))
2018-11-17 21:15:55 +08:00
//.pipe(rename({ extname: '.min.js' }))
2018-11-21 02:32:01 +08:00
.pipe(gulp.dest('./build/assets/js'))
2018-11-17 21:15:55 +08:00
})
// compress css
2018-11-21 02:32:01 +08:00
gulp.task('ccss', () => {
2018-11-17 21:15:55 +08:00
return gulp.src('../src/main/webapp/assets/css/**/*.css')
2018-11-21 02:32:01 +08:00
.pipe(cleanCss())
.pipe(debug({ title: 'compress css file : ' }))
2018-11-17 21:15:55 +08:00
//.pipe(rename({ extname: '.min.css' }))
2018-11-21 02:32:01 +08:00
.pipe(gulp.dest('./build/assets/css'))
2018-11-17 21:15:55 +08:00
})
2018-11-21 02:32:01 +08:00
// replace compressed js/css file in jsp
// compress and replace inline js (babel)
gulp.task('cjsp', () => {
2018-11-20 00:04:37 +08:00
return gulp.src('../src/main/webapp/**/*.jsp')
2018-11-21 02:32:01 +08:00
.pipe(debug({ title: 'compress jsp file : ' }))
2018-11-20 00:04:37 +08:00
.pipe(replace(/<script type="text\/babel">([\s]+[\d\D]*)<\/script>/igm, (m, p, o, s) => {
2018-11-21 02:32:01 +08:00
p = p.trim()
if (p.length == 0) return '<script><!--NoCode--></script>'
let es5 = ''
try {
let r = babelCore.transformSync(p, { "presets": ["@babel/env", "@babel/react"], minified: true })
es5 = r.code
} catch (err){
console.log('Babel transform : ' + err)
}
2018-11-20 00:04:37 +08:00
return '<script>' + es5 + '</script>'
}))
.pipe(replace(/ type="text\/babel"/ig, '')) // remove type="text/babel"
2018-11-21 02:32:01 +08:00
.pipe(replace(/\.jsx/g, '.js')) // replace suffix .jsx > .js
2018-11-20 00:04:37 +08:00
.pipe(replace('<script src="${baseUrl}/assets/lib/react/babel.js"></script>', '')) // remove babel lib
// .pipe(cleanhtml())
2018-11-21 02:32:01 +08:00
// .pipe(rev())
// .pipe(revReplace())
.pipe(gulp.dest('./build'))
2018-11-17 21:15:55 +08:00
})
2018-11-21 02:32:01 +08:00
gulp.task('default', [ 'cjs', 'ccss', 'cjsp' ])