123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // 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
- }
- }
|