提交 110501ff 编写于 作者: fxy060608's avatar fxy060608

feat(v3): restore

上级 8f940846
...@@ -23,7 +23,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt ...@@ -23,7 +23,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
runByHBuilderX, // 使用 HBuilderX 运行 runByHBuilderX, // 使用 HBuilderX 运行
isInHBuilderX, // 在 HBuilderX 的插件中 isInHBuilderX, // 在 HBuilderX 的插件中
hasModule, hasModule,
getMainEntry,
getPlatformVue, getPlatformVue,
jsPreprocessOptions, jsPreprocessOptions,
htmlPreprocessOptions htmlPreprocessOptions
...@@ -207,26 +206,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt ...@@ -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 = [{ const rules = [{
test: path.resolve(process.env.UNI_INPUT_DIR, 'pages.json'), test: path.resolve(process.env.UNI_INPUT_DIR, 'pages.json'),
use: [{ use: [{
...@@ -236,18 +215,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt ...@@ -236,18 +215,6 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
}], }],
type: 'javascript/auto' 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/, resourceQuery: /vue&type=template/,
use: [{ use: [{
......
...@@ -3,8 +3,7 @@ const path = require('path') ...@@ -3,8 +3,7 @@ const path = require('path')
const { const {
getMainEntry, getMainEntry,
getH5Options, getH5Options
getPlatformCssnano
} = require('@dcloudio/uni-cli-shared') } = require('@dcloudio/uni-cli-shared')
const modifyVueLoader = require('../vue-loader') const modifyVueLoader = require('../vue-loader')
...@@ -63,6 +62,18 @@ if (devServer && Object.keys(devServer).length) { ...@@ -63,6 +62,18 @@ if (devServer && Object.keys(devServer).length) {
module.exports = { module.exports = {
vueConfig, vueConfig,
webpackConfig (webpackConfig) { 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 { return {
devtool: process.env.NODE_ENV === 'production' ? false : 'source-map', devtool: process.env.NODE_ENV === 'production' ? false : 'source-map',
resolve: { resolve: {
...@@ -74,6 +85,16 @@ module.exports = { ...@@ -74,6 +85,16 @@ module.exports = {
}, },
module: { module: {
rules: [{ rules: [{
test: path.resolve(process.env.UNI_INPUT_DIR, getMainEntry()),
use: [{
loader: 'wrap-loader',
options: {
before: [
beforeCode + statCode
]
}
}]
}, {
test: /App\.vue$/, test: /App\.vue$/,
use: { use: {
loader: 'wrap-loader', loader: 'wrap-loader',
...@@ -114,52 +135,7 @@ module.exports = { ...@@ -114,52 +135,7 @@ module.exports = {
modifyVueLoader(webpackConfig, require('./compiler-options'), api) modifyVueLoader(webpackConfig, require('./compiler-options'), api)
if (process.env.NODE_ENV === 'production') { if (process.env.NODE_ENV === 'production') {
const module = webpackConfig.module require('./cssnano-options')(webpackConfig)
// 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)
} }
} }
} }
...@@ -94,6 +94,9 @@ module.exports = { ...@@ -94,6 +94,9 @@ module.exports = {
devtool = 'sourcemap' devtool = 'sourcemap'
} }
} }
const statCode = process.env.UNI_USING_STAT ? `import '@dcloudio/uni-stat';` : ''
const beforeCode = `import 'uni-pages';`
return { return {
devtool, devtool,
...@@ -121,6 +124,13 @@ module.exports = { ...@@ -121,6 +124,13 @@ module.exports = {
rules: [{ rules: [{
test: path.resolve(process.env.UNI_INPUT_DIR, getMainEntry()), test: path.resolve(process.env.UNI_INPUT_DIR, getMainEntry()),
use: [{ use: [{
loader: 'wrap-loader',
options: {
before: [
beforeCode + statCode
]
}
}, {
loader: '@dcloudio/webpack-uni-mp-loader/lib/main' loader: '@dcloudio/webpack-uni-mp-loader/lib/main'
}] }]
}, { }, {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册