diff --git a/packages/vue-cli-plugin-uni/lib/configure-webpack.js b/packages/vue-cli-plugin-uni/lib/configure-webpack.js index a061bd775ff5513f88414235de2d07b3079a330b..c5e15d163660ca2f70ab0ac043aad4e57035f1df 100644 --- a/packages/vue-cli-plugin-uni/lib/configure-webpack.js +++ b/packages/vue-cli-plugin-uni/lib/configure-webpack.js @@ -23,7 +23,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt runByHBuilderX, // 使用 HBuilderX 运行 isInHBuilderX, // 在 HBuilderX 的插件中 hasModule, - getMainEntry, getPlatformVue, jsPreprocessOptions, htmlPreprocessOptions @@ -207,26 +206,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt })) } - let useBuiltIns = 'entry' - if (process.env.UNI_PLATFORM === 'h5') { // 兼容旧版本 h5 - useBuiltIns = 'usage' - try { - const babelConfig = require(path.resolve(process.env.UNI_CLI_CONTEXT, 'babel.config.js')) - useBuiltIns = babelConfig.presets[0][1].useBuiltIns - } catch (e) {} - } - - const statCode = process.env.UNI_USING_STAT ? `import '@dcloudio/uni-stat';` : '' - - let beforeCode = '' - - if (process.env.UNI_PLATFORM === 'h5') { - beforeCode = (useBuiltIns === 'entry' ? `import '@babel/polyfill';` : '') + - `import 'uni-pages';import 'uni-${process.env.UNI_PLATFORM}';` - } else { - beforeCode = `import 'uni-pages';` - } - const rules = [{ test: path.resolve(process.env.UNI_INPUT_DIR, 'pages.json'), use: [{ @@ -236,18 +215,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt }], type: 'javascript/auto' }, - { - test: path.resolve(process.env.UNI_INPUT_DIR, getMainEntry()), - // resourceQuery: /type=wrapper/, - use: [{ - loader: 'wrap-loader', - options: { - before: [ - beforeCode + statCode - ] - } - }] - }, { resourceQuery: /vue&type=template/, use: [{ diff --git a/packages/vue-cli-plugin-uni/lib/h5/index.js b/packages/vue-cli-plugin-uni/lib/h5/index.js index 2de8359e82969477b0391b6767ac0962ff36a7f7..cb4f5c8e7545df70390353d6679d2612eec5ba9d 100644 --- a/packages/vue-cli-plugin-uni/lib/h5/index.js +++ b/packages/vue-cli-plugin-uni/lib/h5/index.js @@ -3,8 +3,7 @@ const path = require('path') const { getMainEntry, - getH5Options, - getPlatformCssnano + getH5Options } = require('@dcloudio/uni-cli-shared') const modifyVueLoader = require('../vue-loader') @@ -63,6 +62,18 @@ if (devServer && Object.keys(devServer).length) { module.exports = { vueConfig, webpackConfig (webpackConfig) { + let useBuiltIns = 'usage' + + const statCode = process.env.UNI_USING_STAT ? `import '@dcloudio/uni-stat';` : '' + + try { + const babelConfig = require(path.resolve(process.env.UNI_CLI_CONTEXT, 'babel.config.js')) + useBuiltIns = babelConfig.presets[0][1].useBuiltIns + } catch (e) {} + + const beforeCode = (useBuiltIns === 'entry' ? `import '@babel/polyfill';` : '') + + `import 'uni-pages';import 'uni-${process.env.UNI_PLATFORM}';` + return { devtool: process.env.NODE_ENV === 'production' ? false : 'source-map', resolve: { @@ -74,6 +85,16 @@ module.exports = { }, module: { rules: [{ + test: path.resolve(process.env.UNI_INPUT_DIR, getMainEntry()), + use: [{ + loader: 'wrap-loader', + options: { + before: [ + beforeCode + statCode + ] + } + }] + }, { test: /App\.vue$/, use: { loader: 'wrap-loader', @@ -114,52 +135,7 @@ module.exports = { modifyVueLoader(webpackConfig, require('./compiler-options'), api) if (process.env.NODE_ENV === 'production') { - const module = webpackConfig.module - // TODO 临时 hack calc:false 看看 vue cli 后续是否开放 cssnano 的配置 - const cssnanoOptions = { - sourceMap: false, - plugins: [require('cssnano')({ - preset: ['default', getPlatformCssnano()] - })] - } - - module.rule('css').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('css').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('css').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('css').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - - module.rule('postcss').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('postcss').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('postcss').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('postcss').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - - module.rule('scss').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('scss').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('scss').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('scss').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - - module.rule('sass').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('sass').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('sass').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('sass').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - - module.rule('less').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('less').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('less').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('less').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - - module.rule('stylus').oneOf('vue-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('stylus').oneOf('vue').use('cssnano').loader('postcss-loader').options(cssnanoOptions) - module.rule('stylus').oneOf('normal-modules').use('cssnano').loader('postcss-loader').options( - cssnanoOptions) - module.rule('stylus').oneOf('normal').use('cssnano').loader('postcss-loader').options(cssnanoOptions) + require('./cssnano-options')(webpackConfig) } } } diff --git a/packages/vue-cli-plugin-uni/lib/mp.js b/packages/vue-cli-plugin-uni/lib/mp.js index 4d37822c4780af22a5d4a8e0a6aa2bc630d9056c..f8fdf9fc9d4e41052dde7b10e9dad1bffd595851 100644 --- a/packages/vue-cli-plugin-uni/lib/mp.js +++ b/packages/vue-cli-plugin-uni/lib/mp.js @@ -94,6 +94,9 @@ module.exports = { devtool = 'sourcemap' } } + const statCode = process.env.UNI_USING_STAT ? `import '@dcloudio/uni-stat';` : '' + + const beforeCode = `import 'uni-pages';` return { devtool, @@ -121,6 +124,13 @@ module.exports = { rules: [{ test: path.resolve(process.env.UNI_INPUT_DIR, getMainEntry()), use: [{ + loader: 'wrap-loader', + options: { + before: [ + beforeCode + statCode + ] + } + }, { loader: '@dcloudio/webpack-uni-mp-loader/lib/main' }] }, {