// eslint-disable-next-line @typescript-eslint/no-var-requires const merge = require('webpack-merge') // eslint-disable-next-line @typescript-eslint/no-var-requires const tsImportPluginFactory = require('ts-import-plugin') // eslint-disable-next-line @typescript-eslint/no-var-requires const autoprefixer = require('autoprefixer') // eslint-disable-next-line @typescript-eslint/no-var-requires const pxtorem = require('postcss-pxtorem') // eslint-disable-next-line @typescript-eslint/no-var-requires const pxtoviewport = require('postcss-px-to-viewport') const externals = { vue: 'Vue', 'vue-router': 'VueRouter', vuex: 'Vuex', axios: 'axios', 'js-cookie': 'Cookies', vant: 'vant', moment: 'moment' } module.exports = { publicPath: process.env.BASE_URL, parallel: false, productionSourceMap: false, devServer: { proxy: { '^/testServer': { target: 'http://192.168.3.207:8181/', changeOrigin: true, logLevel: 'debug', pathRewrite: { '/testServer': '' } } } }, css: { loaderOptions: { sass: { prependData: '@import "@/style/_mixin.scss";@import "@/style/_variables.scss";@import "@/style/base.scss";@import "@/style/common.scss";' // 全局引入 }, postcss: { plugins: [ autoprefixer(), pxtoviewport(({ unitToConvert: 'px', viewportWidth: 375, unitPrecision: 5, propList: [ '*' ], viewportUnit: 'vw', fontViewportUnit: 'vw', selectorBlackList: [], minPixelValue: 1, mediaQuery: false, replace: true, exclude: /(\/|\\)(node_modules)(\/|\\)/ })) // pxtorem({ // rootValue: 37.5, // propList: ['*'] // }) ] } } }, chainWebpack: config => { // 防止多页面打包卡顿 // eslint-disable-next-line no-unused-expressions // config.plugins.delete('named-chunks') if (process.env.NODE_ENV === 'production') { // 打包时需要执行,开发环境运行不需要执行 config.externals(externals) } if (process.env.use_analyzer) { config .plugin('webpack-bundle-analyzer') .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) } config.module .rule('ts') .use('ts-loader') .tap(options => { options = merge(options, { transpileOnly: true, getCustomTransformers: () => ({ before: [ tsImportPluginFactory({ libraryName: 'vant', libraryDirectory: 'es', style: true }) ] }), compilerOptions: { module: 'es2015' } }) return options }) // return config } }