diff --git a/packages/taro-mini-runner/package.json b/packages/taro-mini-runner/package.json index dfadb71f80ab..a5313131a103 100644 --- a/packages/taro-mini-runner/package.json +++ b/packages/taro-mini-runner/package.json @@ -64,7 +64,7 @@ "url-loader": "^2.0.0", "virtual-module-webpack-plugin": "^0.4.1", "webpack": "^4.31.0", - "webpack-chain": "^6.0.0", + "webpack-chain": "4.9.0", "webpack-format-messages": "^2.0.5", "yauzl": "2.10.0" }, diff --git a/packages/taro-mini-runner/src/plugins/TaroLoadChunksPlugin.ts b/packages/taro-mini-runner/src/plugins/TaroLoadChunksPlugin.ts index c31836b6c82d..e7aa2eb57ee7 100644 --- a/packages/taro-mini-runner/src/plugins/TaroLoadChunksPlugin.ts +++ b/packages/taro-mini-runner/src/plugins/TaroLoadChunksPlugin.ts @@ -51,9 +51,9 @@ export default class TaroLoadChunksPlugin { }) }) const source = new ConcatSource() - const id = chunk.id + const name = chunk.name commonChunks.forEach(chunkItem => { - source.add(`require(${JSON.stringify(promoteRelativePath(path.relative(id, chunkItem.name)))});\n`) + source.add(`require(${JSON.stringify(promoteRelativePath(path.relative(name, chunkItem.name)))});\n`) }) source.add('\n') source.add(modules) diff --git a/packages/taro-mini-runner/src/utils/constants.ts b/packages/taro-mini-runner/src/utils/constants.ts index f741e35c38e0..093d1ef4e43b 100644 --- a/packages/taro-mini-runner/src/utils/constants.ts +++ b/packages/taro-mini-runner/src/utils/constants.ts @@ -13,7 +13,7 @@ export const REG_SCRIPTS: RegExp = /\.[tj]sx?$/i export const REG_SASS: RegExp = /\.(s[ac]ss)$/ export const REG_LESS: RegExp = /\.less$/ export const REG_STYLUS: RegExp = /\.styl$/ -export const REG_STYLE: RegExp = /\.(css|scss|sass|less|styl|wxss)(\?.*)?$/ +export const REG_STYLE: RegExp = /\.(css|scss|sass|less|styl|wxss|acss)(\?.*)?$/ export const REG_MEDIA: RegExp = /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/ export const REG_IMAGE: RegExp = /\.(png|jpe?g|gif|bpm|svg|webp)(\?.*)?$/ export const REG_FONT: RegExp = /\.(woff2?|eot|ttf|otf)(\?.*)?$/ diff --git a/packages/taro-mini-runner/src/webpack/base.conf.ts b/packages/taro-mini-runner/src/webpack/base.conf.ts new file mode 100644 index 000000000000..ef68095db015 --- /dev/null +++ b/packages/taro-mini-runner/src/webpack/base.conf.ts @@ -0,0 +1,24 @@ +import * as path from 'path' +import * as Chain from 'webpack-chain' + +export default (appPath: string) => { + const chain = new Chain() + chain.merge({ + resolve: { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + mainFields: ['main', 'module'], + symlinks: true, + modules: [ + path.join(appPath, 'node_modules'), + 'node_modules' + ] + }, + resolveLoader: { + modules: [ + 'node_modules' + ] + } + }) + + return chain +} diff --git a/packages/taro-mini-runner/src/webpack/build.conf.ts b/packages/taro-mini-runner/src/webpack/build.conf.ts index 7fee552031e6..11109bb13905 100644 --- a/packages/taro-mini-runner/src/webpack/build.conf.ts +++ b/packages/taro-mini-runner/src/webpack/build.conf.ts @@ -1,5 +1,4 @@ import * as path from 'path' -import * as Chain from 'webpack-chain' import { IBuildConfig } from '../utils/types' import { @@ -15,13 +14,14 @@ import { getMiniPlugin, getMiniCssExtractPlugin, } from './chain' +import getBaseConf from './base.conf' import { BUILD_TYPES, PARSE_AST_TYPE, MINI_APP_FILES } from '../utils/constants' import { Targets } from '../plugins/MiniPlugin' const emptyObj = {} export default (appPath: string, mode, config: Partial): any => { - const chain = new Chain() + const chain = getBaseConf(appPath) const { buildAdapter = BUILD_TYPES.WEAPP, alias = emptyObj, @@ -77,7 +77,7 @@ export default (appPath: string, mode, config: Partial): any => { plugin.miniCssExtractPlugin = getMiniCssExtractPlugin([{ filename: `[name]${MINI_APP_FILES[buildAdapter].STYLE}`, - chunkFilename: `[id]${MINI_APP_FILES[buildAdapter].STYLE}` + chunkFilename: `[name]${MINI_APP_FILES[buildAdapter].STYLE}` }, miniCssExtractPluginOption]) const isCssoEnabled = (csso && csso.enable === false) @@ -98,10 +98,11 @@ export default (appPath: string, mode, config: Partial): any => { } if (isCssoEnabled) { - plugin.cssoWebpackPlugin = getCssoWebpackPlugin([csso ? csso.config : {}]) + const cssoConfig: any = csso ? csso.config : {} + plugin.cssoWebpackPlugin = getCssoWebpackPlugin([cssoConfig]) } } - const mainConfig = { + chain.merge({ mode, devtool: getDevtool(enableSourceMap), entry, @@ -111,21 +112,7 @@ export default (appPath: string, mode, config: Partial): any => { buildAdapter, }, output]), target: Targets[buildAdapter], - resolve: { - alias, - extensions: ['.js', '.jsx', '.ts', '.tsx'], - mainFields: ['main', 'module'], - symlinks: true, - modules: [ - path.join(appPath, 'node_modules'), - 'node_modules' - ] - }, - resolveLoader: { - modules: [ - 'node_modules' - ] - }, + resolve: { alias }, module: getModule(appPath, { sourceDir, @@ -166,8 +153,6 @@ export default (appPath: string, mode, config: Partial): any => { } } } - } - - chain.merge(mainConfig) + }) return chain } diff --git a/packages/taro-mini-runner/src/webpack/chain.ts b/packages/taro-mini-runner/src/webpack/chain.ts index 6aa00db8cc64..d6109337b519 100644 --- a/packages/taro-mini-runner/src/webpack/chain.ts +++ b/packages/taro-mini-runner/src/webpack/chain.ts @@ -102,7 +102,7 @@ export const mergeOption = ([...options]: IOption[]): IOption => { const styleModuleReg = /(.*\.module).*\.(css|s[ac]ss|less|styl)\b/ const styleGlobalReg = /(.*\.global).*\.(css|s[ac]ss|less|styl)\b/ -export const processEnvOption = partial(mapKeys as any, (key: string) => `process.env.${key}`) +export const processEnvOption = partial(mapKeys as any, (key: string) => `process.env.${key}`) as any export const getCssLoader = pipe(mergeOption, partial(getLoader, 'css-loader')) export const getPostcssLoader = pipe(mergeOption, partial(getLoader, 'postcss-loader')) @@ -130,7 +130,7 @@ export const getUglifyPlugin = ([enableSourceMap, uglifyOptions]) => { }) } export const getCssoWebpackPlugin = ([cssoOption]) => { - return pipe(mergeOption, listify, partial(getPlugin, CssoWebpackPlugin))([defaultCSSCompressOption, cssoOption]) + return pipe(listify, partial(getPlugin, CssoWebpackPlugin))([mergeOption([defaultCSSCompressOption, cssoOption]), REG_STYLE]) } export const getCopyWebpackPlugin = ({ copy, appPath }: { copy: ICopyOptions, @@ -344,6 +344,7 @@ export function getOutput (appPath: string, [{ outputRoot, publicPath, buildAdap path: path.join(appPath, outputRoot), publicPath, filename: '[name].js', + chunkFilename: '[name].js', globalObject: globalObjectMap[buildAdapter], ...customOutput } diff --git a/packages/taro/types/compile.ts b/packages/taro/types/compile.ts index b70af352929a..2d74d0dbdfa5 100644 --- a/packages/taro/types/compile.ts +++ b/packages/taro/types/compile.ts @@ -364,6 +364,5 @@ export interface IProjectConfig extends IProjectBaseConfig { extraWatchFiles?: any[] }, mini?: IMiniAppConfig, - h5?: IH5Config, - quickApp?: ITaroManifestConfig + h5?: IH5Config }