123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- const path = require("path");
- const webpack = require("webpack");
- const GitRevisionPlugin = require("git-revision-webpack-plugin");
- const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
- const GitRevision = new GitRevisionPlugin();
- const buildDate = JSON.stringify(new Date().toLocaleString());
- const createThemeColorReplacerPlugin = require("./config/plugin.config");
- const theme = require("./src/config/theme.config");
- const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin");
- // const serverCongfig = require('./src/config/serviceSettings')
- const webpackPlatformSetting = require("plg-platform-setting/webpack-plugin");
- function resolve(dir) {
- return path.join(__dirname, dir);
- }
- // check Git
- function getGitHash() {
- try {
- return GitRevision.version();
- } catch (e) {}
- return "unknown";
- }
- const isProd = process.env.NODE_ENV === "production";
- const assetsCDN = {
- // webpack build externals
- externals: {
- vue: "Vue",
- "vue-router": "VueRouter",
- vuex: "Vuex",
- axios: "axios",
- },
- css: [],
- js: [
- "//cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js",
- "//cdn.jsdelivr.net/npm/vue-router@3.5.2/dist/vue-router.min.js",
- "//cdn.jsdelivr.net/npm/vuex@3.6.2/dist/vuex.min.js",
- "//cdn.jsdelivr.net/npm/axios@0.19.0/dist/axios.min.js",
- //at.alicdn.com/t/font_1780424_92kpfp3gue7.js
- ],
- };
- const defaultPlugins = [
- // Ignore all locale files of moment.js
- new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
- new webpack.DefinePlugin({
- APP_VERSION: `"${require("./package.json").version}"`,
- GIT_HASH: JSON.stringify(getGitHash()),
- BUILD_DATE: buildDate,
- }),
- new MonacoWebpackPlugin({
- languages: ["javascript", "css", "html", "json", "sql"],
- features: ["coreCommands", "find"],
- }),
- // createThemeColorReplacerPlugin(),
- new webpackPlatformSetting(),
- ];
- /**依赖大小分析工具 npm run build:preview */
- process.env.MODE == "preview" ? defaultPlugins.push(new BundleAnalyzerPlugin()) : null;
- // vue.config.js
- const vueConfig = {
- configureWebpack: {
- // webpack plugins
- plugins: defaultPlugins,
- // if prod, add externals
- // externals: isProd ? assetsCDN.externals : {}
- },
- filenameHashing: false, //去掉文件名后的hash
- chainWebpack: (config) => {
- config.resolve.alias.set("@$", resolve("src")).set("jq", resolve("public/jq"));
- console.log("NODE_ENV", process.env.NODE_ENV);
- if (process.env.NODE_ENV == "plglib") {
- /**用于联调测试组件库的开发模式 */
- const plglibPath = process.env.PLGLIB_PATH;
- console.log("PLGLIB_PATH", process.env.PLGLIB_PATH);
- config.resolve.alias.set("plglib", resolve("_plglib")).set("@plglib", plglibPath + "/packages");
- }
- const svgRule = config.module.rule("svg");
- svgRule.uses.clear();
- svgRule
- .oneOf("inline")
- .resourceQuery(/inline/)
- .use("vue-svg-icon-loader")
- .loader("vue-svg-icon-loader")
- .end()
- .end()
- .oneOf("external")
- .use("file-loader")
- .loader("file-loader")
- .options({
- name: "assets/[name].[hash:8].[ext]",
- });
- // if prod is on
- // assets require on cdn
- if (isProd) {
- config.plugin("html").tap((args) => {
- // args[0].cdn = assetsCDN
- return args;
- });
- }
- config.plugins.delete("prefetch");
- // /js/views-enterprise-img-enterprise-112-png.js
- // 去除生产环境下的 console
- if (isProd) {
- config.optimization.minimizer("terser").tap((options) => {
- options[0].terserOptions.compress.drop_console = true;
- return options;
- });
- }
- },
- css: {
- loaderOptions: {
- less: {
- modifyVars: {
- // less vars,customize ant design theme
- // 'primary-color': '#F5222D',
- // 'link-color': '#F5222D',
- "border-radius-base": "2px",
- ...theme,
- },
- // DO NOT REMOVE THIS LINE
- javascriptEnabled: true,
- },
- },
- },
- devServer: {
- // development server port 8000
- port: 8000,
- // If you want to turn on the proxy, please remove the mockjs /src/main.jsL11
- // proxy: {
- // '/api': {
- // target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro',
- // ws: false,
- // changeOrigin: true
- // }
- // }
- proxy: {
- "^/api": {
- // 通过配置来启动,有配置的使用配置,没有配置默认公司网关
- // target: 'http://192.168.1.212:7002', // 公司测试 conba
- // target: 'http://116.54.19.104:7002', // 昆中药 conba
- // target: 'http://192.168.1.88:30127', // 康恩贝 conba
- // target: "http://10.30.67.19:7002", // 思源
- // target: 'http://192.168.1.88:30262', // 思源医疗测试环境
- // target: "http://192.168.1.200:7002", // 鹰江开发环境
- target: "http://wms-qingniu.upcloud.plg.com", //青牛开发环境
- // target: "http://192.168.1.88:31533", //青牛测试环境
- // 192.168.1.37:27200/home
- pathRewrite: {
- "^/api": "/api",
- },
- },
- "^/qneis_": {
- target: "http://192.168.40.96:10019",
- pathRewrite: {
- "^/qneis_": "",
- },
- },
- "/localw": {
- target: "http://127.0.0.1:6060",
- changeOrigin: true,
- ws: false,
- pathRewrite: {
- "^/localw": "",
- },
- },
- },
- },
- // disable source map in production
- productionSourceMap: false,
- lintOnSave: false,
- // babel-loader no-ignore node_modules/*
- transpileDependencies: [],
- /* 设计器运行时编译需要 */
- runtimeCompiler: true,
- };
- // preview.pro.loacg.com only do not use in your production;
- if (process.env.VUE_APP_PREVIEW === "true") {
- console.log("VUE_APP_PREVIEW", true);
- // add `ThemeColorReplacer` plugin to webpack plugins
- // vueConfig.configureWebpack.plugins.push(createThemeColorReplacerPlugin())
- }
- //vueConfig.configureWebpack.plugins.push(createThemeColorReplacerPlugin())
- module.exports = vueConfig;
|