const { defineConfig } = require("@vue/cli-service"); const webpack = require("webpack"); // 获取所有书籍列表 const bookList = process.env.VUE_APP_BOOK_LIST ? process.env.VUE_APP_BOOK_LIST.split("/") : []; module.exports = defineConfig({ publicPath: process.env.VUE_APP_PUBLIC_PATH, transpileDependencies: true, lintOnSave: false, devServer: { open: true, historyApiFallback: true, allowedHosts: "all", headers: { "access-control-allow-origin": "*", }, client: { overlay: { warnings: false, errors: true }, }, }, configureWebpack: { output: { library: `app-content`, libraryTarget: "umd", chunkLoadingGlobal: `webpackJsonp_app-content`, }, plugins: [ new webpack.IgnorePlugin({ checkResource(resource) { if (process.env.VUE_APP_ENV == "product") { // 编译和打包过滤 for (let i = 0; i < bookList.length; i++) { const bookName = bookList[i]; if (bookName != process.env.VUE_APP_BOOK_ID) { // 过滤不需要的模块 if (resource.indexOf(bookName) > -1) { return true; } } } } return false; }, }), ], }, chainWebpack: (config) => { config.module .rule("change-prefix") .test(/\.js$/) .include.add("/node_modules/element-ui/lib") .end() .use("change-prefix") .loader("change-prefix-loader") .options({ prefix: "el-", replace: "gp-", }) .end(); // svg图标加载 config.module .rule("svg") .exclude.add(path.join(__dirname, "src/assets/icons/svg")) .end(); config.module .rule("icons") // 定义一个名叫 icons 的规则 .test(/\.svg$/) // 设置 icons 的匹配正则 .include.add(path.join(__dirname, "src/assets/icons/svg")) // 设置当前规则的作用目录,只在当前目录下才执行当前规则 .end() .use("svg-sprite") // 指定一个名叫 svg-sprite 的 loader 配置 .loader("svg-sprite-loader") // 该配置使用 svg-sprite-loader 作为处理 loader .options({ // 该 svg-sprite-loader 的配置 symbolId: "icon-[name]", }) .end(); }, }); const path = require("path");