gulpのminifyプロセスの改善 (#5624)

* Use terser instead of uglify

* Use gulp-clean-css instead of gulp-cssnano

* isProduction分岐を削除
This commit is contained in:
MeiMei 2019-12-12 00:37:58 +09:00 committed by syuilo
parent dc5b2bf02c
commit 4d7f69b05f
3 changed files with 112 additions and 750 deletions

View file

@ -3,27 +3,22 @@
*/ */
import * as gulp from 'gulp'; import * as gulp from 'gulp';
import * as gutil from 'gulp-util';
import * as ts from 'gulp-typescript'; import * as ts from 'gulp-typescript';
const sourcemaps = require('gulp-sourcemaps'); const sourcemaps = require('gulp-sourcemaps');
import tslint from 'gulp-tslint'; import tslint from 'gulp-tslint';
const cssnano = require('gulp-cssnano');
const stylus = require('gulp-stylus'); const stylus = require('gulp-stylus');
import * as uglifyComposer from 'gulp-uglify/composer';
import * as rimraf from 'rimraf'; import * as rimraf from 'rimraf';
import * as chalk from 'chalk'; import * as chalk from 'chalk';
import * as rename from 'gulp-rename'; import * as rename from 'gulp-rename';
import * as mocha from 'gulp-mocha'; import * as mocha from 'gulp-mocha';
import * as replace from 'gulp-replace'; import * as replace from 'gulp-replace';
const uglifyes = require('uglify-es'); const cleanCSS = require('gulp-clean-css');
const terser = require('gulp-terser');
const locales = require('./locales'); const locales = require('./locales');
const uglify = uglifyComposer(uglifyes, console);
const env = process.env.NODE_ENV || 'development'; const env = process.env.NODE_ENV || 'development';
const isProduction = env === 'production'; const isDebug = env !== 'production';
const isDebug = !isProduction;
if (isDebug) { if (isDebug) {
console.warn(chalk.yellow.bold('WARNING! NODE_ENV is not "production".')); console.warn(chalk.yellow.bold('WARNING! NODE_ENV is not "production".'));
@ -101,17 +96,15 @@ gulp.task('build:client:script', () => {
.pipe(replace('VERSION', JSON.stringify(client.version))) .pipe(replace('VERSION', JSON.stringify(client.version)))
.pipe(replace('ENV', JSON.stringify(env))) .pipe(replace('ENV', JSON.stringify(env)))
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales)))) .pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
.pipe(isProduction ? uglify({ .pipe(terser({
toplevel: true toplevel: true
} as any) : gutil.noop()) }))
.pipe(gulp.dest('./built/client/assets/')); .pipe(gulp.dest('./built/client/assets/'));
}); });
gulp.task('build:client:styles', () => gulp.task('build:client:styles', () =>
gulp.src('./src/client/app/init.css') gulp.src('./src/client/app/init.css')
.pipe(isProduction .pipe(cleanCSS())
? (cssnano as any)()
: gutil.noop())
.pipe(gulp.dest('./built/client/assets/')) .pipe(gulp.dest('./built/client/assets/'))
); );
@ -130,7 +123,7 @@ gulp.task('copy:client', () =>
gulp.task('doc', () => gulp.task('doc', () =>
gulp.src('./src/docs/**/*.styl') gulp.src('./src/docs/**/*.styl')
.pipe(stylus()) .pipe(stylus())
.pipe((cssnano as any)()) .pipe(cleanCSS())
.pipe(gulp.dest('./built/docs/assets/')) .pipe(gulp.dest('./built/docs/assets/'))
); );

View file

@ -26,7 +26,6 @@
"format": "gulp format" "format": "gulp format"
}, },
"resolutions": { "resolutions": {
"gulp-cssnano/cssnano/postcss-svgo/svgo/js-yaml": "^3.13.1",
"https-proxy-agent": "^3.0.0", "https-proxy-agent": "^3.0.0",
"lodash": "^4.17.13" "lodash": "^4.17.13"
}, },
@ -50,8 +49,6 @@
"@types/gulp-mocha": "0.0.32", "@types/gulp-mocha": "0.0.32",
"@types/gulp-rename": "0.0.33", "@types/gulp-rename": "0.0.33",
"@types/gulp-replace": "0.0.31", "@types/gulp-replace": "0.0.31",
"@types/gulp-uglify": "3.0.6",
"@types/gulp-util": "3.0.34",
"@types/is-url": "1.2.28", "@types/is-url": "1.2.28",
"@types/js-yaml": "3.12.1", "@types/js-yaml": "3.12.1",
"@types/jsdom": "12.2.4", "@types/jsdom": "12.2.4",
@ -133,16 +130,15 @@
"file-type": "12.4.0", "file-type": "12.4.0",
"fluent-ffmpeg": "2.1.2", "fluent-ffmpeg": "2.1.2",
"gulp": "4.0.2", "gulp": "4.0.2",
"gulp-cssnano": "2.1.3", "gulp-clean-css": "4.2.0",
"gulp-mocha": "7.0.2", "gulp-mocha": "7.0.2",
"gulp-rename": "1.4.0", "gulp-rename": "1.4.0",
"gulp-replace": "1.0.0", "gulp-replace": "1.0.0",
"gulp-sourcemaps": "2.6.5", "gulp-sourcemaps": "2.6.5",
"gulp-stylus": "2.7.0", "gulp-stylus": "2.7.0",
"gulp-terser": "1.2.0",
"gulp-tslint": "8.1.4", "gulp-tslint": "8.1.4",
"gulp-typescript": "5.0.1", "gulp-typescript": "5.0.1",
"gulp-uglify": "3.0.2",
"gulp-util": "3.0.8",
"hard-source-webpack-plugin": "0.13.1", "hard-source-webpack-plugin": "0.13.1",
"html-minifier": "4.0.0", "html-minifier": "4.0.0",
"http-signature": "1.3.1", "http-signature": "1.3.1",
@ -233,7 +229,6 @@
"tslint-sonarts": "1.9.0", "tslint-sonarts": "1.9.0",
"typeorm": "0.2.20", "typeorm": "0.2.20",
"typescript": "3.7.2", "typescript": "3.7.2",
"uglify-es": "3.3.9",
"ulid": "2.3.0", "ulid": "2.3.0",
"url-loader": "2.3.0", "url-loader": "2.3.0",
"uuid": "3.3.3", "uuid": "3.3.3",

832
yarn.lock

File diff suppressed because it is too large Load diff