From 8a369c994b1c5ec2ed0998e3d92334afbda1da24 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 23 Mar 2017 00:41:11 +0900 Subject: [PATCH] Refactoring --- gulpfile.ts | 50 ++++++++----------- src/version.ts | 12 ++--- webpack.config.ts | 124 ++++++++++++++++++++++------------------------ 3 files changed, 86 insertions(+), 100 deletions(-) diff --git a/gulpfile.ts b/gulpfile.ts index 6376e0f89..06eaafc96 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -20,7 +20,7 @@ import imagemin = require('gulp-imagemin'); import * as rename from 'gulp-rename'; import * as mocha from 'gulp-mocha'; import * as replace from 'gulp-replace'; -import getVersion from './src/version'; +import version from './src/version'; const env = process.env.NODE_ENV; const isProduction = env === 'production'; @@ -129,21 +129,16 @@ gulp.task('build:client', [ 'copy:client' ]); -gulp.task('build:client:scripts', done => { - getVersion.then(version => { - require('./webpack.config').then(webpackOptions => { - es.merge( - webpack(webpackOptions, require('webpack')) - .pipe(gulp.dest('./built/web/assets/')) as any, - gulp.src('./src/web/app/client/script.js') - .pipe(replace('VERSION', JSON.stringify(version))) - //.pipe(isProduction ? uglify() : gutil.noop()) - .pipe(gulp.dest('./built/web/assets/client/')) as any - ); - done(); - }); - }); -}); +gulp.task('build:client:scripts', () => + es.merge( + webpack(require('./webpack.config'), require('webpack')) + .pipe(gulp.dest('./built/web/assets/')) as any, + gulp.src('./src/web/app/client/script.js') + .pipe(replace('VERSION', JSON.stringify(version))) + //.pipe(isProduction ? uglify() : gutil.noop()) + .pipe(gulp.dest('./built/web/assets/client/')) as any + ) +); gulp.task('build:client:styles', () => gulp.src('./src/web/app/init.css') @@ -172,16 +167,13 @@ gulp.task('build:client:pug', [ 'copy:client', 'build:client:scripts', 'build:client:styles' -], done => { - getVersion.then(version => { - gulp.src('./src/web/app/*/view.pug') - .pipe(pug({ - locals: { - version: version, - themeColor: constants.themeColor - } - })) - .pipe(gulp.dest('./built/web/app/')); - done(); - }); -}); +], () => + gulp.src('./src/web/app/*/view.pug') + .pipe(pug({ + locals: { + version: version, + themeColor: constants.themeColor + } + })) + .pipe(gulp.dest('./built/web/app/')) +); diff --git a/src/version.ts b/src/version.ts index 42819d872..2b4c1320e 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1,9 +1,7 @@ -const getVersion = new Promise(async resolve => { - const ぱっけーじ = require('../package.json'); +/** + * Version + */ - const version = ぱっけーじ.version; +const meta = require('../package.json'); - resolve(version); -}); - -export default getVersion; +export default meta.version as string; diff --git a/webpack.config.ts b/webpack.config.ts index cfb985c98..a61e903a9 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -4,77 +4,73 @@ import * as webpack from 'webpack'; const StringReplacePlugin = require('string-replace-webpack-plugin'); -import getVersion from './src/version'; +import version from './src/version'; const constants = require('./src/const.json'); const env = process.env.NODE_ENV; const isProduction = env === 'production'; -module.exports = new Promise(async resolve => { - const version = await getVersion.then(); - - const pack: webpack.Configuration = { - entry: { - 'desktop': './src/web/app/desktop/script.js', - 'mobile': './src/web/app/mobile/script.js', - 'dev': './src/web/app/dev/script.js', - 'auth': './src/web/app/auth/script.js' - }, - module: { - rules: [ - { - enforce: 'pre', - test: /\.tag$/, - exclude: /node_modules/, - loader: StringReplacePlugin.replace({ - replacements: [ - { pattern: /\$theme\-color\-foreground/g, replacement: () => constants.themeColorForeground }, - { pattern: /\$theme\-color/g, replacement: () => constants.themeColor }, - ] - }) - }, - { - test: /\.tag$/, - exclude: /node_modules/, - loader: 'riot-tag-loader', - query: { - hot: false, - style: 'stylus', - expr: false, - compact: true, - parserOptions: { - style: { - compress: true - } +const pack: webpack.Configuration = { + entry: { + 'desktop': './src/web/app/desktop/script.js', + 'mobile': './src/web/app/mobile/script.js', + 'dev': './src/web/app/dev/script.js', + 'auth': './src/web/app/auth/script.js' + }, + module: { + rules: [ + { + enforce: 'pre', + test: /\.tag$/, + exclude: /node_modules/, + loader: StringReplacePlugin.replace({ + replacements: [ + { pattern: /\$theme\-color\-foreground/g, replacement: () => constants.themeColorForeground }, + { pattern: /\$theme\-color/g, replacement: () => constants.themeColor }, + ] + }) + }, + { + test: /\.tag$/, + exclude: /node_modules/, + loader: 'riot-tag-loader', + query: { + hot: false, + style: 'stylus', + expr: false, + compact: true, + parserOptions: { + style: { + compress: true } } - }, - { - test: /\.styl$/, - exclude: /node_modules/, - use: [ - { loader: 'style-loader' }, - { loader: 'css-loader' }, - { loader: 'stylus-loader' } - ] } - ] - }, - plugins: [ - new webpack.DefinePlugin({ - VERSION: JSON.stringify(version), - THEME_COLOR: JSON.stringify(constants.themeColor) - }), - new StringReplacePlugin() - ], - output: { - filename: `[name]/script.${version}.js` - } - }; - - if (isProduction) { - //pack.plugins.push(new webpack.optimize.UglifyJsPlugin()); + }, + { + test: /\.styl$/, + exclude: /node_modules/, + use: [ + { loader: 'style-loader' }, + { loader: 'css-loader' }, + { loader: 'stylus-loader' } + ] + } + ] + }, + plugins: [ + new webpack.DefinePlugin({ + VERSION: JSON.stringify(version), + THEME_COLOR: JSON.stringify(constants.themeColor) + }), + new StringReplacePlugin() + ], + output: { + filename: `[name]/script.${version}.js` } +}; - resolve(pack); -}); +if (isProduction) { + //pack.plugins.push(new webpack.optimize.UglifyJsPlugin()); +} + +module.exports = pack;