Browse Source

升级框架版本

main
likunming 1 month ago
parent
commit
86a08686c0
  1. 4
      irbs.cust.rating/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer
  2. 6
      irbs.frontend/tailwind.config.cjs
  3. 5
      irbs.frontend/tsconfig.json
  4. 34
      irbs.frontend/util-components-generator.cjs
  5. 62
      irbs.frontend/webpack.config.common.cjs
  6. 18
      irbs.frontend/webpack.config.mf.cjs
  7. 18
      irbs.frontend/webpack.env.build.cjs
  8. 7
      irbs.frontend/webpack.env.prod.cjs
  9. 6
      irbs.shrcb.poc.frontend/tailwind.config.cjs
  10. 5
      irbs.shrcb.poc.frontend/tsconfig.json
  11. 7
      irbs.shrcb.poc.frontend/util-components-generator.cjs
  12. 63
      irbs.shrcb.poc.frontend/webpack.config.common.cjs
  13. 28
      irbs.shrcb.poc.frontend/webpack.config.mf.cjs
  14. 7
      irbs.shrcb.poc.frontend/webpack.env.prod.cjs

4
irbs.cust.rating/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer

@ -1 +1,5 @@
irbs.cust.rating.initializer.CustRatingWorkFlowInitializer 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

6
irbs.frontend/tailwind.config.cjs

@ -8,11 +8,7 @@ module.exports = {
}, },
screens: { 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: [], plugins: [],

5
irbs.frontend/tsconfig.json

@ -9,13 +9,14 @@
"allowImportingTsExtensions": true, "allowImportingTsExtensions": true,
"noImplicitAny": false, "noImplicitAny": false,
"moduleResolution": "node16", "moduleResolution": "node16",
"sourceMap": true, "sourceMap": false,
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {
"@/*": [ "@/*": [
"src/*" "src/*"
] ]
}, },
"jsxImportSource": "vue" "jsxImportSource": "vue",
"isolatedModules": true
} }
} }

34
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 文件 * 通过 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')); const routesJson = Json5.parse(fs.readFileSync('./src/routes/routes.json', 'utf8'));
@ -13,16 +13,13 @@ content +='/**\n';
content +=' * 此文件为自动生成文件,请勿修改\n'; content +=' * 此文件为自动生成文件,请勿修改\n';
content +=' */\n\n'; content +=' */\n\n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.replaceAll('.','_'); generateImportComonents(route);
const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`;
} }
content +='\n'; content +='\n';
content +='const localComponents = { \n'; content +='const localComponents = { \n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.replaceAll('.','_'); generateComonents(route);
content +=`'${route.component}': ${componentName},\n`;
} }
content +='}\n\n'; content +='}\n\n';
content +='export default localComponents;\n'; content +='export default localComponents;\n';
@ -30,3 +27,24 @@ content +='export default localComponents;\n';
fs.writeFileSync('./src/components/index.ts', content); fs.writeFileSync('./src/components/index.ts', content);
console.info('components generated!'); 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);
}
}
}

62
irbs.frontend/webpack.config.common.cjs

@ -37,18 +37,19 @@ module.exports = {
exclude: /node_modules/, exclude: /node_modules/,
use: [ use: [
{ {
loader: "babel-loader", loader: 'babel-loader',
options: { options: {
cacheDirectory: true, cacheDirectory: true,
} },
} },
] ],
}, },
// css // css
{ {
test: /\.(sa|sc|c)ss$/, test: /\.(sa|sc|c)ss$/,
use: [{ use: [
{
loader: MiniCssExtractPlugin.loader, loader: MiniCssExtractPlugin.loader,
}, },
{ {
@ -56,16 +57,20 @@ module.exports = {
}, },
{ {
loader: 'postcss-loader', loader: 'postcss-loader',
}] },
{
loader: 'sass-loader',
},
],
}, },
// 字体文件 // 字体文件, 仅包含 woff2 文件
{ {
test: /\.(woff|woff2|eot|ttf|otf)(\?.*)?$/, test: /\.(woff|woff2|eot|ttf|otf)(\?.*)?$/,
type: 'asset/resource', type: 'asset/resource',
generator: { generator: {
filename: `fonts/[name].[contenthash:5].[ext]`, filename: `fonts/[name].[contenthash:5].[ext]`,
} },
}, },
// json5 // json5
@ -84,8 +89,23 @@ module.exports = {
use: [ use: [
{ {
loader: 'vue-loader', 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: [ plugins: [
new webpack.DefinePlugin({ new webpack.DefinePlugin({
__VUE_OPTIONS_API__: JSON.stringify(true), __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 抽取插件 // css 抽取插件
new MiniCssExtractPlugin({ new MiniCssExtractPlugin({
filename: `css/[name].[contenthash:5].css`, filename: `css/[name].[contenthash:5].css`,
chunkFilename: `css/[name].[contenthash:5].css` chunkFilename: `css/[name].[contenthash:5].css`,
}), }),
// 自动生成静态 index.html 文件 // 自动生成静态 index.html 文件
@ -112,6 +132,7 @@ module.exports = {
filename: `index.html`, filename: `index.html`,
minify: false, minify: false,
inject: 'body', inject: 'body',
// 提供时间戳, 避免 index.html 中引入 main.xxxx.js 中的 xxxx 和生成的 js 文件不一致的问题
timestamp: new Date().getTime(), timestamp: new Date().getTime(),
}), }),
@ -123,14 +144,14 @@ module.exports = {
toType: 'dir', toType: 'dir',
filter: async (resourcePath) => { filter: async (resourcePath) => {
// 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 // 不复制 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 false;
} }
return true; return true;
}, },
info: { minimized: true }, info: { minimized: true },
} },
] ],
}), }),
// vue loader 插件 // vue loader 插件
@ -141,9 +162,7 @@ module.exports = {
fix: true, fix: true,
formatter: 'stylish', formatter: 'stylish',
extensions: ['js', 'ts', 'vue', 'cjs'], extensions: ['js', 'ts', 'vue', 'cjs'],
exclude: [ exclude: ['node_modules'],
'node_modules',
],
}), }),
], ],
@ -154,6 +173,11 @@ module.exports = {
'@': path.resolve(__dirname, 'src'), '@': path.resolve(__dirname, 'src'),
}, },
// 设置支持的模块扩展名,即这些扩展名的文件可以作为模块被使用 // 设置支持的模块扩展名,即这些扩展名的文件可以作为模块被使用
extensions: ['.ts', '.js', '.cjs', '.vue'] extensions: ['.js', '.cjs', '.ts', '.vue'],
fallback: {
fs: false,
os: false,
path: false,
},
}, },
}; };

18
irbs.frontend/webpack.config.mf.cjs

@ -43,6 +43,19 @@ module.exports = {
'@codemirror/search': { requiredVersion: deps['@codemirror/search'], singleton: true }, '@codemirror/search': { requiredVersion: deps['@codemirror/search'], singleton: true },
'@codemirror/state': { requiredVersion: deps['@codemirror/state'], singleton: true }, '@codemirror/state': { requiredVersion: deps['@codemirror/state'], singleton: true },
'@codemirror/view': { requiredVersion: deps['@codemirror/view'], 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 }, '@vueuse/core': { requiredVersion: deps['@vueuse/core'], singleton: true },
'axios': { requiredVersion: deps['axios'], singleton: true }, 'axios': { requiredVersion: deps['axios'], singleton: true },
'codemirror': { requiredVersion: deps['codemirror'], singleton: true }, 'codemirror': { requiredVersion: deps['codemirror'], singleton: true },
@ -51,15 +64,16 @@ module.exports = {
'exceljs':{ requiredVersion: deps['exceljs'], singleton: true }, 'exceljs':{ requiredVersion: deps['exceljs'], singleton: true },
'file-saver':{ requiredVersion: deps['file-saver'], singleton: true }, 'file-saver':{ requiredVersion: deps['file-saver'], singleton: true },
'luckyexcel':{ requiredVersion: deps['luckyexcel'], 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 }, 'pinia': { requiredVersion: deps['pinia'], singleton: true },
'platform-core': { requiredVersion: deps['platform-core'], singleton: true }, 'platform-core': { requiredVersion: deps['platform-core'], singleton: true },
'quasar': { requiredVersion: deps['quasar'], 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': { requiredVersion: deps['vue'], singleton: true },
'vue-codemirror6': { requiredVersion: deps['vue-codemirror6'], singleton: true },
'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true },
'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true },
'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true },
'xml-formatter': { requiredVersion: deps['xml-formatter'], singleton: true }
} }
}), }),
] ]

18
irbs.frontend/webpack.env.build.cjs

@ -24,7 +24,7 @@ module.exports = merge(common, mf, {
cacheGroups: { cacheGroups: {
'shared': { 'shared': {
name: 'vue', 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, priority: 20,
chunks: 'all', chunks: 'all',
enforce: true enforce: true
@ -38,7 +38,7 @@ module.exports = merge(common, mf, {
}, },
'codemirror':{ 'codemirror':{
name: '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, priority: 20,
chunks: 'all', chunks: 'all',
enforce: true enforce: true
@ -64,6 +64,20 @@ module.exports = merge(common, mf, {
chunks: 'all', chunks: 'all',
enforce: true 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': { 'view': {
name: 'view', name: 'view',
test: /[\\/]view[\\/]/, test: /[\\/]view[\\/]/,

7
irbs.frontend/webpack.env.prod.cjs

@ -2,7 +2,7 @@
* 生产环境构建 * 生产环境构建
*/ */
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); // css 压缩插件 const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); // css 压缩插件
const TerserPlugin = require("terser-webpack-plugin"); // js 压缩插件 const TerserPlugin = require('terser-webpack-plugin'); // js 压缩插件
const { merge } = require('webpack-merge'); // webpack 配置合并函数 const { merge } = require('webpack-merge'); // webpack 配置合并函数
const build = require('./webpack.env.build.cjs'); // 开发环境构建配置 const build = require('./webpack.env.build.cjs'); // 开发环境构建配置
@ -15,12 +15,13 @@ module.exports = merge(build, {
// eval-source-map| build:slowest, rebuild:ok | Recommended choice for development builds with high quality SourceMaps. // 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. // source-map | build:slowest, rebuild:slowest | Recommended choice for production builds with high quality SourceMaps.
// ------------------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------------------
devtool: 'source-map', devtool: 'eval-source-map',
optimization: { optimization: {
minimize: true, minimize: true,
minimizer: [ minimizer: [
new CssMinimizerPlugin(), // css 压缩插件 new CssMinimizerPlugin(), // css 压缩插件
new TerserPlugin({ // js 压缩插件 new TerserPlugin({
// js 压缩插件
extractComments: false, extractComments: false,
terserOptions: { terserOptions: {
format: { format: {

6
irbs.shrcb.poc.frontend/tailwind.config.cjs

@ -8,11 +8,7 @@ module.exports = {
}, },
screens: { 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: [], plugins: [],

5
irbs.shrcb.poc.frontend/tsconfig.json

@ -10,12 +10,13 @@
"allowImportingTsExtensions": true, "allowImportingTsExtensions": true,
"noImplicitAny": false, "noImplicitAny": false,
"moduleResolution": "node16", "moduleResolution": "node16",
"sourceMap": true, "sourceMap": false,
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {
"@/*": [ "@/*": [
"src/*" "src/*"
] ]
} },
"isolatedModules": true
} }
} }

7
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 文件 * 通过 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')); 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!'); console.info('components generated!');
function generateImportComonents(route){ function generateImportComonents(route){
const componentName =route.component.replaceAll('.','_'); const componentName =route.component.replaceAll('.','_');
const componentPath =route.componentPath; const componentPath =route.componentPath;

63
irbs.shrcb.poc.frontend/webpack.config.common.cjs

@ -37,18 +37,19 @@ module.exports = {
exclude: /node_modules/, exclude: /node_modules/,
use: [ use: [
{ {
loader: "babel-loader", loader: 'babel-loader',
options: { options: {
cacheDirectory: true, cacheDirectory: true,
} },
} },
] ],
}, },
// css // css
{ {
test: /\.(sa|sc|c)ss$/, test: /\.(sa|sc|c)ss$/,
use: [{ use: [
{
loader: MiniCssExtractPlugin.loader, loader: MiniCssExtractPlugin.loader,
}, },
{ {
@ -56,16 +57,20 @@ module.exports = {
}, },
{ {
loader: 'postcss-loader', loader: 'postcss-loader',
}] },
{
loader: 'sass-loader',
},
],
}, },
// 字体文件 // 字体文件, 仅包含 woff2 文件
{ {
test: /\.(woff|woff2|eot|ttf|otf)(\?.*)?$/, test: /\.(woff|woff2|eot|ttf|otf)(\?.*)?$/,
type: 'asset/resource', type: 'asset/resource',
generator: { generator: {
filename: `fonts/[name].[contenthash:5].[ext]`, filename: `fonts/[name].[contenthash:5].[ext]`,
} },
}, },
// json5 // json5
@ -84,8 +89,23 @@ module.exports = {
use: [ use: [
{ {
loader: 'vue-loader', 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: [ plugins: [
new webpack.DefinePlugin({ new webpack.DefinePlugin({
__VUE_OPTIONS_API__: JSON.stringify(true), __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 抽取插件 // css 抽取插件
new MiniCssExtractPlugin({ new MiniCssExtractPlugin({
filename: `css/[name].[contenthash:5].css`, filename: `css/[name].[contenthash:5].css`,
chunkFilename: `css/[name].[contenthash:5].css` chunkFilename: `css/[name].[contenthash:5].css`,
}), }),
// 自动生成静态 index.html 文件 // 自动生成静态 index.html 文件
@ -112,6 +132,7 @@ module.exports = {
filename: `index.html`, filename: `index.html`,
minify: false, minify: false,
inject: 'body', inject: 'body',
// 提供时间戳, 避免 index.html 中引入 main.xxxx.js 中的 xxxx 和生成的 js 文件不一致的问题
timestamp: new Date().getTime(), timestamp: new Date().getTime(),
}), }),
@ -129,8 +150,8 @@ module.exports = {
return true; return true;
}, },
info: { minimized: true }, info: { minimized: true },
} },
] ],
}), }),
// vue loader 插件 // vue loader 插件
@ -141,9 +162,7 @@ module.exports = {
fix: true, fix: true,
formatter: 'stylish', formatter: 'stylish',
extensions: ['js', 'ts', 'vue', 'cjs'], extensions: ['js', 'ts', 'vue', 'cjs'],
exclude: [ exclude: ['node_modules'],
'node_modules',
],
}), }),
], ],
@ -154,11 +173,11 @@ module.exports = {
'@': path.resolve(__dirname, 'src'), '@': path.resolve(__dirname, 'src'),
}, },
// 设置支持的模块扩展名,即这些扩展名的文件可以作为模块被使用 // 设置支持的模块扩展名,即这些扩展名的文件可以作为模块被使用
extensions: ['.ts', '.js', '.cjs', '.vue'], extensions: ['.js', '.cjs', '.ts', '.vue'],
fallback: { fallback: {
"fs": false, fs: false,
"os": false, os: false,
"path": false, path: false,
} },
}, },
}; };

28
irbs.shrcb.poc.frontend/webpack.config.mf.cjs

@ -44,6 +44,18 @@ module.exports = {
'@codemirror/state': { requiredVersion: deps['@codemirror/state'], singleton: true }, '@codemirror/state': { requiredVersion: deps['@codemirror/state'], singleton: true },
'@codemirror/view': { requiredVersion: deps['@codemirror/view'], singleton: true }, '@codemirror/view': { requiredVersion: deps['@codemirror/view'], singleton: true },
'@maxgraph/core': { requiredVersion: deps['@maxgraph/core'], 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 }, '@vueuse/core': { requiredVersion: deps['@vueuse/core'], singleton: true },
'axios': { requiredVersion: deps['axios'], singleton: true }, 'axios': { requiredVersion: deps['axios'], singleton: true },
'codemirror': { requiredVersion: deps['codemirror'], singleton: true }, 'codemirror': { requiredVersion: deps['codemirror'], singleton: true },
@ -52,26 +64,16 @@ module.exports = {
'exceljs':{ requiredVersion: deps['exceljs'], singleton: true }, 'exceljs':{ requiredVersion: deps['exceljs'], singleton: true },
'file-saver':{ requiredVersion: deps['file-saver'], singleton: true }, 'file-saver':{ requiredVersion: deps['file-saver'], singleton: true },
'luckyexcel':{ requiredVersion: deps['luckyexcel'], 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 }, 'pinia': { requiredVersion: deps['pinia'], singleton: true },
'platform-core': { requiredVersion: deps['platform-core'], singleton: true }, 'platform-core': { requiredVersion: deps['platform-core'], singleton: true },
'quasar': { requiredVersion: deps['quasar'], 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': { requiredVersion: deps['vue'], singleton: true },
'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true },
'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true },
'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true },
"xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, 'xml-formatter': { requiredVersion: deps['xml-formatter'], 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 }
} }
}), }),
] ]

7
irbs.shrcb.poc.frontend/webpack.env.prod.cjs

@ -2,7 +2,7 @@
* 生产环境构建 * 生产环境构建
*/ */
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); // css 压缩插件 const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); // css 压缩插件
const TerserPlugin = require("terser-webpack-plugin"); // js 压缩插件 const TerserPlugin = require('terser-webpack-plugin'); // js 压缩插件
const { merge } = require('webpack-merge'); // webpack 配置合并函数 const { merge } = require('webpack-merge'); // webpack 配置合并函数
const build = require('./webpack.env.build.cjs'); // 开发环境构建配置 const build = require('./webpack.env.build.cjs'); // 开发环境构建配置
@ -15,12 +15,13 @@ module.exports = merge(build, {
// eval-source-map| build:slowest, rebuild:ok | Recommended choice for development builds with high quality SourceMaps. // 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. // source-map | build:slowest, rebuild:slowest | Recommended choice for production builds with high quality SourceMaps.
// ------------------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------------------
devtool: 'source-map', devtool: 'eval-source-map',
optimization: { optimization: {
minimize: true, minimize: true,
minimizer: [ minimizer: [
new CssMinimizerPlugin(), // css 压缩插件 new CssMinimizerPlugin(), // css 压缩插件
new TerserPlugin({ // js 压缩插件 new TerserPlugin({
// js 压缩插件
extractComments: false, extractComments: false,
terserOptions: { terserOptions: {
format: { format: {

Loading…
Cancel
Save