1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| module.exports = {}
const {defineConfig} = require("@vue/cli-serve") module.exports = defineConfig({ publicPath:process.env.NODE_ENV === "production" ? "/production-sub-path/" : "/" css:{ loaderOptions:{ css:{ }, postcss:{ } } } devServer:{ proxy:{ '/api':{ target:'<url>', ws:true, changeOrigin:true } } } })
|
configureWebpack:最简单的配置就是在该选项里面提供一个对象,如果你需要基于环境条件有条件的配置行为,或者想要直接修改配置就可以换成一个函数。该函数的第一个参数会收到已经解析好的配置 ,你可以直接修改配置,或者返回一个将被合并的对象:
1 2 3 4 5 6 7 8 9
| module.exports = { configureWebpack:config => { if(process.env.NODE_ENV === "production"){ }else{ } } }
|
链式操作(高级):vue-cli内部配置是通过webpack-chain维护的,这个库提供了一个webpack原始配置的上层抽象使其可以定义具名的loader规则和具名插件,并有机会在后期进入 这些规则并对它们的选项进行修改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| module.exports = { chainWebpack:config => { config.module .rule("vue") .use("vue-loader") .tap(options => { return options }) } }
module.exports = { chainWebpack:config => { config.module .rule("graphql") .test(/\.graphql$/) .use("graphql-tag/loader") .loader("graphql-tag/loader") .end() } }
module.exports = { chainWebpack:config => { const svgRule = config.module.rule("svg") svgRule.uses.clear() svgRule .use("vue-svg-loader") .loader("vue-svg-loader") } }
module.exports = { chainWebpack:config => { config .plugin("html") .tap(args => { return [传递给html-webpack-plugin构造函数的新参数] }) } }
|