From 065e43b3d7fdbc9fc0b3f740473d9ef57e075d8f Mon Sep 17 00:00:00 2001 From: sunhao Date: Thu, 27 Jun 2019 18:41:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20doc=20=E4=BD=BF=E7=94=A8=20ts=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/build.config.ts | 35 +++++++++------------- doc/build/utils.js | 32 -------------------- doc/build/webpack.extensions.conf.babel.js | 8 +++++ doc/config/{dev.env.js => dev.env.ts} | 0 doc/config/{index.js => index.ts} | 28 ++++++++--------- doc/config/{prod.env.js => prod.env.ts} | 0 src/utils/compiler.webpack.ts | 18 ++++++----- 7 files changed, 46 insertions(+), 75 deletions(-) delete mode 100644 doc/build/utils.js create mode 100644 doc/build/webpack.extensions.conf.babel.js rename doc/config/{dev.env.js => dev.env.ts} (100%) rename doc/config/{index.js => index.ts} (79%) rename doc/config/{prod.env.js => prod.env.ts} (100%) diff --git a/doc/build.config.ts b/doc/build.config.ts index 0126ff8..b573601 100644 --- a/doc/build.config.ts +++ b/doc/build.config.ts @@ -5,17 +5,20 @@ import getBase from './build/webpack.base.conf.babel' import getDll from './build/webpack.dll.conf.babel' import getClient from './build/webpack.client.conf.babel' import getServer from './build/webpack.server.conf.babel' -import path from 'path' +import getExtensions from './build/webpack.extensions.conf.babel.js' export default function(inject: ConfigOptions.getOptionsInject): ConfigOptions.options { const config = getConfig(inject) - const base: any = getBase(config, inject) - const dll: any = getDll(config, inject) - const client: any = getClient(config, inject) - const server: any = getServer(config, inject) + const webpack: any = { + base: getBase(config, inject), + dll: getDll(config, inject), + client: getClient(config, inject), + server: getServer(config, inject), + } + const extensions: any = getExtensions(config, inject) - const { port } = config + const { port, render, statics, proxyTable } = config return { env: ['SERVER_ENV', 'ENV', 'NODE_ENV'], @@ -33,20 +36,10 @@ export default function(inject: ConfigOptions.getOptionsInject): ConfigOptions.o ], ], }, - render: config.render, - statics: config.statics, - proxyTable: config.proxyTable, - extensions: { - entry: { - extensions: inject.resolve('./server/index.js'), - }, - path: path.resolve(base.output.path), - }, - webpack: { - dll, - base, - client, - server, - }, + render, + statics, + proxyTable, + extensions, + webpack, } } diff --git a/doc/build/utils.js b/doc/build/utils.js deleted file mode 100644 index 4cef7b6..0000000 --- a/doc/build/utils.js +++ /dev/null @@ -1,32 +0,0 @@ -import path from 'path' -import config from '../config' -import HappyPack from 'happypack' -import webpack from 'webpack' - -export function assetsPath(_path) { - return path.posix.join(config.assetsSubDirectory, _path) -} - -export function makeHappyPack(id, loaders) { - return new HappyPack({ - id: id, - threads: 4, - loaders: loaders - }) -} - -export const resolve = (p) => path.resolve(__dirname, '..', p) - -export function makeDllPlugins(nameArr) { - const plugins = [] - nameArr.forEach((name) => { - plugins.push( - new webpack.DllReferencePlugin({ - // context: resolve('.'), - // manifest: config.isProd ? require(`../dist/build/dll/${name}.manifest.json`) : require(`../dist/dll/${name}.manifest.json`) - manifest: require(resolve(`${config.assetRoot}/dll/${name}.manifest.json`)), - }) - ) - }) - return plugins -} diff --git a/doc/build/webpack.extensions.conf.babel.js b/doc/build/webpack.extensions.conf.babel.js new file mode 100644 index 0000000..d634890 --- /dev/null +++ b/doc/build/webpack.extensions.conf.babel.js @@ -0,0 +1,8 @@ +export default function(config, { resolve }) { + return { + entry: { + extensions: resolve('./server/index.js'), + }, + path: config.assetRoot + } +} diff --git a/doc/config/dev.env.js b/doc/config/dev.env.ts similarity index 100% rename from doc/config/dev.env.js rename to doc/config/dev.env.ts diff --git a/doc/config/index.js b/doc/config/index.ts similarity index 79% rename from doc/config/index.js rename to doc/config/index.ts index 4d920ef..03a84e8 100644 --- a/doc/config/index.js +++ b/doc/config/index.ts @@ -1,3 +1,5 @@ +import { ConfigOptions } from '@bestminr/build' + import path from 'path' import ProdEnv from './prod.env' import DevEnv from './dev.env' @@ -46,11 +48,11 @@ export function baseConfig(inject) { statics: { '/service-worker.js': { path: resolve('./dist/service-worker.js'), - maxAge: getStaticsMaxAge({ cache: false, isProd: true }), + maxAge: 0, }, '/manifest.json': { path: resolve('./manifest.json'), - maxAge: getStaticsMaxAge({ cache: false, isProd: false }), + maxAge: 0, }, }, render: { @@ -71,23 +73,23 @@ export function baseConfig(inject) { statics: { '/dist': { path: resolve('./dist'), - maxAge: getStaticsMaxAge({ cache: true, isProd: false }), + maxAge: 0, }, '/common-assets': { path: resolve('./common-assets'), - maxAge: getStaticsMaxAge({ cache: true, isProd: false }), + maxAge: 0, }, '/public': { path: resolve('./public'), - maxAge: getStaticsMaxAge({ cache: true, isProd: false }), + maxAge: 0, }, '/service-worker.js': { path: resolve('./dist/service-worker.js'), - maxAge: getStaticsMaxAge({ cache: false, isProd: false }), + maxAge: 0, }, '/manifest.json': { path: resolve('./manifest.json'), - maxAge: getStaticsMaxAge({ cache: false, isProd: false }), + maxAge: 0, }, }, proxyTable: getProxyTable(inject), @@ -101,7 +103,7 @@ export function baseConfig(inject) { } } -export function getConfig(inject, opts = {}) { +export function getConfig(inject: ConfigOptions.getOptionsInject, opts = {}) { const config = baseConfig(inject) const { resolve } = inject let resultConfig @@ -115,15 +117,15 @@ export function getConfig(inject, opts = {}) { ...resultConfig.statics, '/dist': { path: resolve('./dist'), - maxAge: getStaticsMaxAge({ cache: true, isProd: false }), + maxAge: 0, }, '/common-assets': { path: resolve('./common-assets'), - maxAge: getStaticsMaxAge({ cache: true, isProd: false }), + maxAge: 0, }, [`${outputPath}public`]: { path: resolve('./public'), - maxAge: getStaticsMaxAge({ cache: true, isProd: false }), + maxAge: 0, }, } resultConfig.proxyTable = getProxyTable(inject) @@ -133,7 +135,3 @@ export function getConfig(inject, opts = {}) { } return resultConfig } - -function getStaticsMaxAge(options) { - return options.cache && options.isProd ? STATICS_MAX_AGE : 0 -} diff --git a/doc/config/prod.env.js b/doc/config/prod.env.ts similarity index 100% rename from doc/config/prod.env.js rename to doc/config/prod.env.ts diff --git a/src/utils/compiler.webpack.ts b/src/utils/compiler.webpack.ts index 5f82dfc..9dfdcb9 100644 --- a/src/utils/compiler.webpack.ts +++ b/src/utils/compiler.webpack.ts @@ -296,13 +296,17 @@ function prodCompilerExtensions(options: ConfigOptions.options) { compiler.run((err, stats) => { { - consola.log( - stats.toString({ - all: false, - assets: true - }) - ) - showError(stats) + if (err) { + consola.fatal(err) + } else { + consola.log( + stats.toString({ + all: false, + assets: true + }) + ) + showError(stats) + } } }) })