diff --git a/irbs.cust.rating/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer b/irbs.cust.rating/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer index 6b03604..0feac46 100644 --- a/irbs.cust.rating/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer +++ b/irbs.cust.rating/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer @@ -1 +1,5 @@ -irbs.cust.rating.initializer.CustRatingWorkFlowInitializer \ No newline at end of file +irbs.cust.rating.initializer.CustRatingWorkFlowInitializer +irbs.cust.rating.initializer.DefaultWorkFlowInitializer +irbs.cust.rating.initializer.RebirthWorkFlowInitializer +irbs.cust.rating.initializer.RiskExposureWorkFlowInitializer +irbs.cust.rating.initializer.SampleWorkFlowInitializer \ No newline at end of file diff --git a/irbs.frontend/tailwind.config.cjs b/irbs.frontend/tailwind.config.cjs index b0a43fe..642b850 100644 --- a/irbs.frontend/tailwind.config.cjs +++ b/irbs.frontend/tailwind.config.cjs @@ -8,11 +8,7 @@ module.exports = { }, screens: { - "xs": {"min": "0px", "max": "599px"}, - "sm": {"min": "600px", "max": "1023px"}, - "md": {"min": "1024px", "max": "1439px"}, - "lg": {"min": "1440px", "max": "1919px"}, - "xl": {"min": "1920px"}, + }, }, plugins: [], diff --git a/irbs.frontend/tsconfig.json b/irbs.frontend/tsconfig.json index b63b8eb..893c3c4 100644 --- a/irbs.frontend/tsconfig.json +++ b/irbs.frontend/tsconfig.json @@ -9,13 +9,14 @@ "allowImportingTsExtensions": true, "noImplicitAny": false, "moduleResolution": "node16", - "sourceMap": true, + "sourceMap": false, "baseUrl": ".", "paths": { "@/*": [ "src/*" ] }, - "jsxImportSource": "vue" + "jsxImportSource": "vue", + "isolatedModules": true } } \ No newline at end of file diff --git a/irbs.frontend/util-components-generator.cjs b/irbs.frontend/util-components-generator.cjs index 884a774..820fc63 100644 --- a/irbs.frontend/util-components-generator.cjs +++ b/irbs.frontend/util-components-generator.cjs @@ -1,10 +1,10 @@ +const fs = require('fs'); +const Json5 =require('json5'); + /** * 用于自动生成前端组件 * 通过 src/routes/routes.json 文件构建 src/components/index.ts 文件 */ -const fs = require('fs'); -const Json5 =require('json5'); - // 解析前端路由配置文件 const routesJson = Json5.parse(fs.readFileSync('./src/routes/routes.json', 'utf8')); @@ -13,16 +13,13 @@ content +='/**\n'; content +=' * 此文件为自动生成文件,请勿修改\n'; content +=' */\n\n'; for(const route of routesJson){ - const componentName =route.component.replaceAll('.','_'); - const componentPath =route.componentPath; - content +=`import ${componentName} from '${componentPath}';\n`; + generateImportComonents(route); } content +='\n'; content +='const localComponents = { \n'; for(const route of routesJson){ - const componentName =route.component.replaceAll('.','_'); - content +=`'${route.component}': ${componentName},\n`; + generateComonents(route); } content +='}\n\n'; content +='export default localComponents;\n'; @@ -30,3 +27,24 @@ content +='export default localComponents;\n'; fs.writeFileSync('./src/components/index.ts', content); console.info('components generated!'); + +function generateImportComonents(route){ + const componentName =route.component.replaceAll('.','_'); + const componentPath =route.componentPath; + content +=`import ${componentName} from '${componentPath}';\n`; + if(route.children && route.children.length){ + for(const child of route.children){ + generateImportComonents(child); + } + } +} + +function generateComonents(route){ + const componentName =route.component.replaceAll('.','_'); + content +=`'${route.component}': ${componentName},\n`; + if(route.children && route.children.length){ + for(const child of route.children){ + generateComonents(child); + } + } +} diff --git a/irbs.frontend/webpack.config.common.cjs b/irbs.frontend/webpack.config.common.cjs index 25aee0c..e8726c5 100644 --- a/irbs.frontend/webpack.config.common.cjs +++ b/irbs.frontend/webpack.config.common.cjs @@ -1,16 +1,16 @@ /** * webpack 通用配置 */ -const path = require('path'); // path -const webpack = require('webpack'); // webpack -const json5 = require('json5'); // json5 -const HtmlWebpackPlugin = require('html-webpack-plugin'); // webpack html 生成插件 -const CopyWebpackPlugin = require('copy-webpack-plugin'); // webpack copy 插件 -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 抽取 css 插件 -const { VueLoaderPlugin } = require('vue-loader'); // vue loader 插件 -const ESLintPlugin = require('eslint-webpack-plugin'); // eslint 插件 -const packageJson = require('./package.json'); // package.json -const projectName =packageJson.name; // 项目名称 +const path = require('path'); // path +const webpack = require('webpack'); // webpack +const json5 = require('json5'); // json5 +const HtmlWebpackPlugin = require('html-webpack-plugin'); // webpack html 生成插件 +const CopyWebpackPlugin = require('copy-webpack-plugin'); // webpack copy 插件 +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 抽取 css 插件 +const { VueLoaderPlugin } = require('vue-loader'); // vue loader 插件 +const ESLintPlugin = require('eslint-webpack-plugin'); // eslint 插件 +const packageJson = require('./package.json'); // package.json +const projectName = packageJson.name; // 项目名称 module.exports = { // 入口文件 @@ -37,35 +37,40 @@ module.exports = { exclude: /node_modules/, use: [ { - loader: "babel-loader", + loader: 'babel-loader', options: { cacheDirectory: true, - } - } - ] + }, + }, + ], }, // css { test: /\.(sa|sc|c)ss$/, - use: [{ - loader: MiniCssExtractPlugin.loader, - }, - { - loader: 'css-loader', - }, - { - loader: 'postcss-loader', - }] + use: [ + { + loader: MiniCssExtractPlugin.loader, + }, + { + loader: 'css-loader', + }, + { + loader: 'postcss-loader', + }, + { + loader: 'sass-loader', + }, + ], }, - // 字体文件 + // 字体文件, 仅包含 woff2 文件 { test: /\.(woff|woff2|eot|ttf|otf)(\?.*)?$/, type: 'asset/resource', generator: { filename: `fonts/[name].[contenthash:5].[ext]`, - } + }, }, // json5 @@ -84,8 +89,23 @@ module.exports = { use: [ { loader: 'vue-loader', - } - ] + }, + ], + }, + + // 解决 @maxgraph/core 的问题, 避免出现以下错误 + // ERROR in ./node_modules/.pnpm/@maxgraph+core@0.13.0/node_modules/@maxgraph/core/dist/index.js 175:0-24 + // Module not found: Error: Can't resolve './types' in '/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.core.frontend/node_modules/.pnpm/@maxgraph+core@0.13.0/node_modules/@maxgraph/core/dist' + // Did you mean 'types.js'? + // BREAKING CHANGE: The request './types' failed to resolve only because it was resolved as fully specified + // (probably because the origin is strict EcmaScript Module, e. g. a module with javascript mimetype, a '*.mjs' file, or a '*.js' file where the package.json contains '"type": "module"'). + // The extension in the request is mandatory for it to be fully specified. + { + test: /\.js$/, + include: /node_modules[\/\\]@maxgraph[\/\\]core/, + resolve: { + fullySpecified: false, + }, }, ], }, @@ -94,7 +114,7 @@ module.exports = { plugins: [ new webpack.DefinePlugin({ __VUE_OPTIONS_API__: JSON.stringify(true), - __VUE_PROD_DEVTOOLS__: JSON.stringify(false) + __VUE_PROD_DEVTOOLS__: JSON.stringify(false), }), // 进度显示插件 @@ -103,7 +123,7 @@ module.exports = { // css 抽取插件 new MiniCssExtractPlugin({ filename: `css/[name].[contenthash:5].css`, - chunkFilename: `css/[name].[contenthash:5].css` + chunkFilename: `css/[name].[contenthash:5].css`, }), // 自动生成静态 index.html 文件 @@ -112,6 +132,7 @@ module.exports = { filename: `index.html`, minify: false, inject: 'body', + // 提供时间戳, 避免 index.html 中引入 main.xxxx.js 中的 xxxx 和生成的 js 文件不一致的问题 timestamp: new Date().getTime(), }), @@ -123,14 +144,14 @@ module.exports = { toType: 'dir', filter: async (resourcePath) => { // 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 - if (resourcePath.endsWith('index.html') || resourcePath.endsWith('.DS_Store')) { + if (resourcePath.endsWith('/public/index.html') || resourcePath.endsWith('.DS_Store')) { return false; } return true; }, info: { minimized: true }, - } - ] + }, + ], }), // vue loader 插件 @@ -141,9 +162,7 @@ module.exports = { fix: true, formatter: 'stylish', extensions: ['js', 'ts', 'vue', 'cjs'], - exclude: [ - 'node_modules', - ], + exclude: ['node_modules'], }), ], @@ -154,6 +173,11 @@ module.exports = { '@': path.resolve(__dirname, 'src'), }, // 设置支持的模块扩展名,即这些扩展名的文件可以作为模块被使用 - extensions: ['.ts', '.js', '.cjs', '.vue'] + extensions: ['.js', '.cjs', '.ts', '.vue'], + fallback: { + fs: false, + os: false, + path: false, + }, }, }; diff --git a/irbs.frontend/webpack.config.mf.cjs b/irbs.frontend/webpack.config.mf.cjs index e35ea57..45ba116 100644 --- a/irbs.frontend/webpack.config.mf.cjs +++ b/irbs.frontend/webpack.config.mf.cjs @@ -2,7 +2,7 @@ * webpack module federation 配置 */ const fs = require('fs'); // 文件读取 -const Json5 =require('json5'); // json5 +const Json5 =require('json5'); // json5 const { ModuleFederationPlugin } = require('webpack').container; // webpack 模块联邦插件 const packageJson = require('./package.json'); // package.json const projectName =packageJson.name; // 项目名称 @@ -43,6 +43,19 @@ module.exports = { '@codemirror/search': { requiredVersion: deps['@codemirror/search'], singleton: true }, '@codemirror/state': { requiredVersion: deps['@codemirror/state'], singleton: true }, '@codemirror/view': { requiredVersion: deps['@codemirror/view'], singleton: true }, + '@maxgraph/core': { requiredVersion: deps['@maxgraph/core'], singleton: true }, + '@univerjs/core': { requiredVersion: deps['@univerjs/core'], singleton: true }, + '@univerjs/design': { requiredVersion: deps['@univerjs/design'], singleton: true }, + '@univerjs/docs': { requiredVersion: deps['@univerjs/docs'], singleton: true }, + '@univerjs/docs-ui': { requiredVersion: deps['@univerjs/docs-ui'], singleton: true }, + '@univerjs/engine-formula': { requiredVersion: deps['@univerjs/engine-formula'], singleton: true }, + '@univerjs/engine-render': { requiredVersion: deps['@univerjs/engine-render'], singleton: true }, + '@univerjs/facade': { requiredVersion: deps['@univerjs/facade'], singleton: true }, + '@univerjs/sheets': { requiredVersion: deps['@univerjs/sheets'], singleton: true }, + '@univerjs/sheets-formula': { requiredVersion: deps['@univerjs/sheets-formula'], singleton: true }, + '@univerjs/sheets-ui': { requiredVersion: deps['@univerjs/sheets-ui'], singleton: true }, + '@univerjs/thread-comment': { requiredVersion: deps['@univerjs/thread-comment'], singleton: true }, + '@univerjs/ui': { requiredVersion: deps['@univerjs/ui'], singleton: true }, '@vueuse/core': { requiredVersion: deps['@vueuse/core'], singleton: true }, 'axios': { requiredVersion: deps['axios'], singleton: true }, 'codemirror': { requiredVersion: deps['codemirror'], singleton: true }, @@ -51,15 +64,16 @@ module.exports = { 'exceljs':{ requiredVersion: deps['exceljs'], singleton: true }, 'file-saver':{ requiredVersion: deps['file-saver'], singleton: true }, 'luckyexcel':{ requiredVersion: deps['luckyexcel'], singleton: true }, - "mockjs": { requiredVersion: deps['mockjs'], singleton: true }, + 'mockjs': { requiredVersion: deps['mockjs'], singleton: true }, 'pinia': { requiredVersion: deps['pinia'], singleton: true }, 'platform-core': { requiredVersion: deps['platform-core'], singleton: true }, 'quasar': { requiredVersion: deps['quasar'], singleton: true }, + 'svg-path-commander': { requiredVersion: deps['svg-path-commander'], singleton: true }, 'vue': { requiredVersion: deps['vue'], singleton: true }, - 'vue-codemirror6': { requiredVersion: deps['vue-codemirror6'], singleton: true }, 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + 'xml-formatter': { requiredVersion: deps['xml-formatter'], singleton: true } } }), ] diff --git a/irbs.frontend/webpack.env.build.cjs b/irbs.frontend/webpack.env.build.cjs index 73ae745..fbcf0fb 100644 --- a/irbs.frontend/webpack.env.build.cjs +++ b/irbs.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -38,7 +38,7 @@ module.exports = merge(common, mf, { }, 'codemirror':{ name: 'codemirror', - test: /[\\/]node_modules[\\/](codemirror|vue-codemirror6|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/, + test: /[\\/]node_modules[\\/](codemirror|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -64,6 +64,20 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + 'maxgraph': { + name: 'maxgraph', + test: /[\\/]node_modules[\\/]@maxgraph[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, @@ -80,4 +94,4 @@ module.exports = merge(common, mf, { } } }, -}); \ No newline at end of file +}); diff --git a/irbs.frontend/webpack.env.prod.cjs b/irbs.frontend/webpack.env.prod.cjs index ab9a725..964095e 100644 --- a/irbs.frontend/webpack.env.prod.cjs +++ b/irbs.frontend/webpack.env.prod.cjs @@ -2,9 +2,9 @@ * 生产环境构建 */ const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); // css 压缩插件 -const TerserPlugin = require("terser-webpack-plugin"); // js 压缩插件 -const { merge } = require('webpack-merge'); // webpack 配置合并函数 -const build = require('./webpack.env.build.cjs'); // 开发环境构建配置 +const TerserPlugin = require('terser-webpack-plugin'); // js 压缩插件 +const { merge } = require('webpack-merge'); // webpack 配置合并函数 +const build = require('./webpack.env.build.cjs'); // 开发环境构建配置 module.exports = merge(build, { mode: 'production', @@ -15,12 +15,13 @@ module.exports = merge(build, { // eval-source-map| build:slowest, rebuild:ok | Recommended choice for development builds with high quality SourceMaps. // source-map | build:slowest, rebuild:slowest | Recommended choice for production builds with high quality SourceMaps. // ------------------------------------------------------------------------------------------------------------------------------- - devtool: 'source-map', + devtool: 'eval-source-map', optimization: { minimize: true, minimizer: [ - new CssMinimizerPlugin(), // css 压缩插件 - new TerserPlugin({ // js 压缩插件 + new CssMinimizerPlugin(), // css 压缩插件 + new TerserPlugin({ + // js 压缩插件 extractComments: false, terserOptions: { format: { diff --git a/irbs.shrcb.poc.frontend/tailwind.config.cjs b/irbs.shrcb.poc.frontend/tailwind.config.cjs index b0a43fe..642b850 100644 --- a/irbs.shrcb.poc.frontend/tailwind.config.cjs +++ b/irbs.shrcb.poc.frontend/tailwind.config.cjs @@ -8,11 +8,7 @@ module.exports = { }, screens: { - "xs": {"min": "0px", "max": "599px"}, - "sm": {"min": "600px", "max": "1023px"}, - "md": {"min": "1024px", "max": "1439px"}, - "lg": {"min": "1440px", "max": "1919px"}, - "xl": {"min": "1920px"}, + }, }, plugins: [], diff --git a/irbs.shrcb.poc.frontend/tsconfig.json b/irbs.shrcb.poc.frontend/tsconfig.json index c23c83d..c3f9a69 100644 --- a/irbs.shrcb.poc.frontend/tsconfig.json +++ b/irbs.shrcb.poc.frontend/tsconfig.json @@ -10,12 +10,13 @@ "allowImportingTsExtensions": true, "noImplicitAny": false, "moduleResolution": "node16", - "sourceMap": true, + "sourceMap": false, "baseUrl": ".", "paths": { "@/*": [ "src/*" ] - } + }, + "isolatedModules": true } } \ No newline at end of file diff --git a/irbs.shrcb.poc.frontend/util-components-generator.cjs b/irbs.shrcb.poc.frontend/util-components-generator.cjs index e61b366..820fc63 100644 --- a/irbs.shrcb.poc.frontend/util-components-generator.cjs +++ b/irbs.shrcb.poc.frontend/util-components-generator.cjs @@ -1,10 +1,10 @@ +const fs = require('fs'); +const Json5 =require('json5'); + /** * 用于自动生成前端组件 * 通过 src/routes/routes.json 文件构建 src/components/index.ts 文件 */ -const fs = require('fs'); -const Json5 =require('json5'); - // 解析前端路由配置文件 const routesJson = Json5.parse(fs.readFileSync('./src/routes/routes.json', 'utf8')); @@ -28,7 +28,6 @@ fs.writeFileSync('./src/components/index.ts', content); console.info('components generated!'); - function generateImportComonents(route){ const componentName =route.component.replaceAll('.','_'); const componentPath =route.componentPath; diff --git a/irbs.shrcb.poc.frontend/webpack.config.common.cjs b/irbs.shrcb.poc.frontend/webpack.config.common.cjs index e53a72f..e8726c5 100644 --- a/irbs.shrcb.poc.frontend/webpack.config.common.cjs +++ b/irbs.shrcb.poc.frontend/webpack.config.common.cjs @@ -1,16 +1,16 @@ /** * webpack 通用配置 */ -const path = require('path'); // path -const webpack = require('webpack'); // webpack -const json5 = require('json5'); // json5 -const HtmlWebpackPlugin = require('html-webpack-plugin'); // webpack html 生成插件 -const CopyWebpackPlugin = require('copy-webpack-plugin'); // webpack copy 插件 -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 抽取 css 插件 -const { VueLoaderPlugin } = require('vue-loader'); // vue loader 插件 -const ESLintPlugin = require('eslint-webpack-plugin'); // eslint 插件 -const packageJson = require('./package.json'); // package.json -const projectName =packageJson.name; // 项目名称 +const path = require('path'); // path +const webpack = require('webpack'); // webpack +const json5 = require('json5'); // json5 +const HtmlWebpackPlugin = require('html-webpack-plugin'); // webpack html 生成插件 +const CopyWebpackPlugin = require('copy-webpack-plugin'); // webpack copy 插件 +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 抽取 css 插件 +const { VueLoaderPlugin } = require('vue-loader'); // vue loader 插件 +const ESLintPlugin = require('eslint-webpack-plugin'); // eslint 插件 +const packageJson = require('./package.json'); // package.json +const projectName = packageJson.name; // 项目名称 module.exports = { // 入口文件 @@ -37,35 +37,40 @@ module.exports = { exclude: /node_modules/, use: [ { - loader: "babel-loader", + loader: 'babel-loader', options: { cacheDirectory: true, - } - } - ] + }, + }, + ], }, // css { test: /\.(sa|sc|c)ss$/, - use: [{ - loader: MiniCssExtractPlugin.loader, - }, - { - loader: 'css-loader', - }, - { - loader: 'postcss-loader', - }] + use: [ + { + loader: MiniCssExtractPlugin.loader, + }, + { + loader: 'css-loader', + }, + { + loader: 'postcss-loader', + }, + { + loader: 'sass-loader', + }, + ], }, - // 字体文件 + // 字体文件, 仅包含 woff2 文件 { test: /\.(woff|woff2|eot|ttf|otf)(\?.*)?$/, type: 'asset/resource', generator: { filename: `fonts/[name].[contenthash:5].[ext]`, - } + }, }, // json5 @@ -84,8 +89,23 @@ module.exports = { use: [ { loader: 'vue-loader', - } - ] + }, + ], + }, + + // 解决 @maxgraph/core 的问题, 避免出现以下错误 + // ERROR in ./node_modules/.pnpm/@maxgraph+core@0.13.0/node_modules/@maxgraph/core/dist/index.js 175:0-24 + // Module not found: Error: Can't resolve './types' in '/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.core.frontend/node_modules/.pnpm/@maxgraph+core@0.13.0/node_modules/@maxgraph/core/dist' + // Did you mean 'types.js'? + // BREAKING CHANGE: The request './types' failed to resolve only because it was resolved as fully specified + // (probably because the origin is strict EcmaScript Module, e. g. a module with javascript mimetype, a '*.mjs' file, or a '*.js' file where the package.json contains '"type": "module"'). + // The extension in the request is mandatory for it to be fully specified. + { + test: /\.js$/, + include: /node_modules[\/\\]@maxgraph[\/\\]core/, + resolve: { + fullySpecified: false, + }, }, ], }, @@ -94,7 +114,7 @@ module.exports = { plugins: [ new webpack.DefinePlugin({ __VUE_OPTIONS_API__: JSON.stringify(true), - __VUE_PROD_DEVTOOLS__: JSON.stringify(false) + __VUE_PROD_DEVTOOLS__: JSON.stringify(false), }), // 进度显示插件 @@ -103,7 +123,7 @@ module.exports = { // css 抽取插件 new MiniCssExtractPlugin({ filename: `css/[name].[contenthash:5].css`, - chunkFilename: `css/[name].[contenthash:5].css` + chunkFilename: `css/[name].[contenthash:5].css`, }), // 自动生成静态 index.html 文件 @@ -112,6 +132,7 @@ module.exports = { filename: `index.html`, minify: false, inject: 'body', + // 提供时间戳, 避免 index.html 中引入 main.xxxx.js 中的 xxxx 和生成的 js 文件不一致的问题 timestamp: new Date().getTime(), }), @@ -129,8 +150,8 @@ module.exports = { return true; }, info: { minimized: true }, - } - ] + }, + ], }), // vue loader 插件 @@ -141,9 +162,7 @@ module.exports = { fix: true, formatter: 'stylish', extensions: ['js', 'ts', 'vue', 'cjs'], - exclude: [ - 'node_modules', - ], + exclude: ['node_modules'], }), ], @@ -154,11 +173,11 @@ module.exports = { '@': path.resolve(__dirname, 'src'), }, // 设置支持的模块扩展名,即这些扩展名的文件可以作为模块被使用 - extensions: ['.ts', '.js', '.cjs', '.vue'], + extensions: ['.js', '.cjs', '.ts', '.vue'], fallback: { - "fs": false, - "os": false, - "path": false, - } + fs: false, + os: false, + path: false, + }, }, }; diff --git a/irbs.shrcb.poc.frontend/webpack.config.mf.cjs b/irbs.shrcb.poc.frontend/webpack.config.mf.cjs index dd430ad..45ba116 100644 --- a/irbs.shrcb.poc.frontend/webpack.config.mf.cjs +++ b/irbs.shrcb.poc.frontend/webpack.config.mf.cjs @@ -44,6 +44,18 @@ module.exports = { '@codemirror/state': { requiredVersion: deps['@codemirror/state'], singleton: true }, '@codemirror/view': { requiredVersion: deps['@codemirror/view'], singleton: true }, '@maxgraph/core': { requiredVersion: deps['@maxgraph/core'], singleton: true }, + '@univerjs/core': { requiredVersion: deps['@univerjs/core'], singleton: true }, + '@univerjs/design': { requiredVersion: deps['@univerjs/design'], singleton: true }, + '@univerjs/docs': { requiredVersion: deps['@univerjs/docs'], singleton: true }, + '@univerjs/docs-ui': { requiredVersion: deps['@univerjs/docs-ui'], singleton: true }, + '@univerjs/engine-formula': { requiredVersion: deps['@univerjs/engine-formula'], singleton: true }, + '@univerjs/engine-render': { requiredVersion: deps['@univerjs/engine-render'], singleton: true }, + '@univerjs/facade': { requiredVersion: deps['@univerjs/facade'], singleton: true }, + '@univerjs/sheets': { requiredVersion: deps['@univerjs/sheets'], singleton: true }, + '@univerjs/sheets-formula': { requiredVersion: deps['@univerjs/sheets-formula'], singleton: true }, + '@univerjs/sheets-ui': { requiredVersion: deps['@univerjs/sheets-ui'], singleton: true }, + '@univerjs/thread-comment': { requiredVersion: deps['@univerjs/thread-comment'], singleton: true }, + '@univerjs/ui': { requiredVersion: deps['@univerjs/ui'], singleton: true }, '@vueuse/core': { requiredVersion: deps['@vueuse/core'], singleton: true }, 'axios': { requiredVersion: deps['axios'], singleton: true }, 'codemirror': { requiredVersion: deps['codemirror'], singleton: true }, @@ -52,26 +64,16 @@ module.exports = { 'exceljs':{ requiredVersion: deps['exceljs'], singleton: true }, 'file-saver':{ requiredVersion: deps['file-saver'], singleton: true }, 'luckyexcel':{ requiredVersion: deps['luckyexcel'], singleton: true }, - "mockjs": { requiredVersion: deps['mockjs'], singleton: true }, + 'mockjs': { requiredVersion: deps['mockjs'], singleton: true }, 'pinia': { requiredVersion: deps['pinia'], singleton: true }, 'platform-core': { requiredVersion: deps['platform-core'], singleton: true }, 'quasar': { requiredVersion: deps['quasar'], singleton: true }, + 'svg-path-commander': { requiredVersion: deps['svg-path-commander'], singleton: true }, 'vue': { requiredVersion: deps['vue'], singleton: true }, 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, - "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, - "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } + 'xml-formatter': { requiredVersion: deps['xml-formatter'], singleton: true } } }), ] diff --git a/irbs.shrcb.poc.frontend/webpack.env.prod.cjs b/irbs.shrcb.poc.frontend/webpack.env.prod.cjs index ab9a725..964095e 100644 --- a/irbs.shrcb.poc.frontend/webpack.env.prod.cjs +++ b/irbs.shrcb.poc.frontend/webpack.env.prod.cjs @@ -2,9 +2,9 @@ * 生产环境构建 */ const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); // css 压缩插件 -const TerserPlugin = require("terser-webpack-plugin"); // js 压缩插件 -const { merge } = require('webpack-merge'); // webpack 配置合并函数 -const build = require('./webpack.env.build.cjs'); // 开发环境构建配置 +const TerserPlugin = require('terser-webpack-plugin'); // js 压缩插件 +const { merge } = require('webpack-merge'); // webpack 配置合并函数 +const build = require('./webpack.env.build.cjs'); // 开发环境构建配置 module.exports = merge(build, { mode: 'production', @@ -15,12 +15,13 @@ module.exports = merge(build, { // eval-source-map| build:slowest, rebuild:ok | Recommended choice for development builds with high quality SourceMaps. // source-map | build:slowest, rebuild:slowest | Recommended choice for production builds with high quality SourceMaps. // ------------------------------------------------------------------------------------------------------------------------------- - devtool: 'source-map', + devtool: 'eval-source-map', optimization: { minimize: true, minimizer: [ - new CssMinimizerPlugin(), // css 压缩插件 - new TerserPlugin({ // js 压缩插件 + new CssMinimizerPlugin(), // css 压缩插件 + new TerserPlugin({ + // js 压缩插件 extractComments: false, terserOptions: { format: {