/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable no-undef */ const { merge } = require("webpack-merge"); const common = require("./webpack.common.js"); const path = require("path"); const lessToJs = require('less-vars-to-js'); const fs = require('fs'); const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); //转换 less 变量,用于主题 const baseLess = lessToJs(fs.readFileSync(path.join(__dirname, '../src/themes/themes.less'), 'utf8')); let themers = {}; Object.keys(baseLess).map((k, i) => { let key = String(k).replace(/@/g, ""); themers[key] = String(baseLess[k]); }); const lessVars = Object.assign(themers, { "@CDN_BASE": "" }); const lessExclude = /(node_modules)|(App)/; module.exports = merge(common, { mode: "development", devtool: "inline-source-map", module: { rules: [ { test: /\.less$/, exclude: lessExclude, use: [ "style-loader", { loader: "css-loader", options: { importLoaders: 1, modules: { localIdentName: "[local]___[hash:base64:5]" } }, }, { loader: "less-loader", options: { modifyVars: lessVars, javascriptEnabled: true } } ], }, { test: /\.less$/, include: lessExclude, use: [ "style-loader", "css-loader", { loader: "less-loader", options: { modifyVars: lessVars, javascriptEnabled: true } } ], }, { test: /\.css$/, use: [ 'style-loader', 'css-loader', ], exclude: /(node_modules)/ }, // style { test: /\.css$/, use: ['style-loader', 'css-loader'], exclude: /(src)/ }, { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, use: ['url-loader?limit=10000&mimetype=images/svg+xml'] }, { test: /\.(less|css)$/, use: ['style-loader', 'css-loader'], include: [ path.resolve(__dirname, './node_modules/monaco-editor/'), path.resolve(__dirname, './node_modules/bravo-editor/'), ] }, // { // test: /\.contribution$/, // include: [ // path.resolve(__dirname, './node_modules/monaco-editor/'), // path.resolve(__dirname, './node_modules/bravo-editor/'), // ], // use: { // loader: "babel-loader", // options: { // presets: ["@babel/preset-env", "@babel/preset-react"], // plugins: ["@babel/plugin-transform-runtime"], // }, // }, // }, // { // test: /\.contribution.js$/, // include: [ // path.resolve(__dirname, './node_modules/monaco-editor/'), // path.resolve(__dirname, './node_modules/bravo-editor/'), // ], // use: { // loader: "babel-loader", // options: { // presets: ["@babel/preset-env", "@babel/preset-react"], // plugins: ["@babel/plugin-transform-runtime"], // }, // }, // }, ], }, plugins: [ new MonacoWebpackPlugin() ], devServer: { // historyApiFallback: true, //不跳转 // noInfo: true, // inline: true, // 实时刷新 // contentBase: join(__dirname, "../dist"), compress: true, port: 9008, host: "0.0.0.0", hot: true, proxy: { "/api": { // target: "http://47.96.100.195:9081" // target: "http://dataportal-test.agile.com.cn:8081" // target: "http://10.8.8.173:9081", target:"https://dms.dataportal.tianqilithium.com:9000", changeOrigin:true, }, "/dataengine-center-oneservice": { // target: "http://10.8.8.185:31233", // target: "http://10.8.8.173:9081", target:"https://dms.dataportal.tianqilithium.com:9000", changeOrigin:true, }, "/mock":{ target: "http://172.24.81.106:9999", pathRewrite: { '^/mock': '/api' }, } }, // lazy: true, // filename: "print.js", // historyApiFallback: /* 对指定url重定向 */ { // rewrites: [ // { from: /^\/$/, to: "/index.html" }, // { from: /^\/subpage/, to: "/index.html" }, // ], // }, }, });