Commit 0e740013 authored by 申中慧's avatar 申中慧

fix:

parent 2da39fad
{ {
"name": "vite-react-ts-admin", "name": "vite-react-ts-admin",
"private": true, "private": true,
"version": "0.0.0", "version": "0.1.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "vite --force", "start": "vite --force",
...@@ -89,6 +89,7 @@ ...@@ -89,6 +89,7 @@
"react-style-proptype": "^3.2.2", "react-style-proptype": "^3.2.2",
"react-text-loop-next": "^0.0.3", "react-text-loop-next": "^0.0.3",
"resize-observer-polyfill": "^1.5.1", "resize-observer-polyfill": "^1.5.1",
"rrule": "^2.7.2",
"socket.io-client": "^4.7.2", "socket.io-client": "^4.7.2",
"swap-array": "^1.0.0", "swap-array": "^1.0.0",
"xlsx-js-style": "^1.2.0", "xlsx-js-style": "^1.2.0",
...@@ -100,6 +101,7 @@ ...@@ -100,6 +101,7 @@
"@babel/plugin-transform-react-jsx": "^7.22.15", "@babel/plugin-transform-react-jsx": "^7.22.15",
"@commitlint/cli": "^17.4.4", "@commitlint/cli": "^17.4.4",
"@commitlint/config-conventional": "^17.4.4", "@commitlint/config-conventional": "^17.4.4",
"@rollup/plugin-node-resolve": "^15.2.1",
"@types/file-saver": "^2.0.3", "@types/file-saver": "^2.0.3",
"@types/history": "^4.7.2", "@types/history": "^4.7.2",
"@types/jest": "^26.0.0", "@types/jest": "^26.0.0",
...@@ -126,6 +128,7 @@ ...@@ -126,6 +128,7 @@
"postcss": "^8.4.29", "postcss": "^8.4.29",
"prettier": "^2.8.4", "prettier": "^2.8.4",
"qs": "^6.11.0", "qs": "^6.11.0",
"rollup-plugin-peer-deps-external": "^2.2.4",
"rollup-plugin-visualizer": "^5.9.2", "rollup-plugin-visualizer": "^5.9.2",
"stylelint": "^15.2.0", "stylelint": "^15.2.0",
"stylelint-config-standard": "^30.0.1", "stylelint-config-standard": "^30.0.1",
......
This diff is collapsed.
import React, { Suspense } from 'react' import React, { Suspense } from 'react'
import ReactDOM from 'react-dom/client' import ReactDOM from 'react-dom/client'
import { HashRouter } from 'react-router-dom' import { HashRouter } from 'react-router-dom'
import 'devextreme/dist/css/dx.light.css'
import App from './App' import App from './App'
import SuspenceFallbackLoading from '@/layout/suspenceFallback' import SuspenceFallbackLoading from '@/layout/suspenceFallback'
import Initial from './initial' import Initial from './initial'
import './app.less' import './app.less'
const root = document.getElementById('root') as HTMLElement const root = document.getElementById('root') as HTMLElement
...@@ -16,6 +17,6 @@ ReactDOM.createRoot(root).render( ...@@ -16,6 +17,6 @@ ReactDOM.createRoot(root).render(
<App /> <App />
</HashRouter> </HashRouter>
</Initial> </Initial>
</Suspense> </Suspense>,
// </React.StrictMode> // </React.StrictMode>
) )
import { defineConfig, type PluginOption } from 'vite' import { defineConfig, type PluginOption, splitVendorChunk } from 'vite'
import { splitVendorChunkPlugin } from 'vite'
import react from '@vitejs/plugin-react' import react from '@vitejs/plugin-react'
// import eslintPlugin from 'vite-plugin-eslint' // import eslintPlugin from 'vite-plugin-eslint'
// import commonjs from '@rollup/plugin-commonjs' // import commonjs from '@rollup/plugin-commonjs' // vite里面自带这个包
import { nodeResolve } from '@rollup/plugin-node-resolve'
import peerDepsExternal from 'rollup-plugin-peer-deps-external'
import { visualizer } from 'rollup-plugin-visualizer' import { visualizer } from 'rollup-plugin-visualizer'
import viteImagemin from 'vite-plugin-imagemin' import viteImagemin from 'vite-plugin-imagemin'
// import viteCompression from 'vite-plugin-compression' // import viteCompression from 'vite-plugin-compression'
...@@ -18,115 +21,132 @@ const chunkFileNames = `${assetDir}/js/[name]-[hash]-chunk.js` ...@@ -18,115 +21,132 @@ const chunkFileNames = `${assetDir}/js/[name]-[hash]-chunk.js`
const assets: any[] = [ const assets: any[] = [
{ {
output: `${assetDir}/img/[name]-[hash][extname]`, output: `${assetDir}/img/[name]-[hash][extname]`,
regex: /\.(png|jpe?g|gif|svg|webp|avif)$/ regex: /\.(png|jpe?g|gif|svg|webp|avif)$/,
}, },
{ {
regex: /\.css$/, regex: /\.css$/,
output: `${assetDir}/css/[name]-[hash][extname]` output: `${assetDir}/css/[name]-[hash][extname]`,
}, },
{ {
output: `${assetDir}/js/[name]-[hash][extname]`, output: `${assetDir}/js/[name]-[hash][extname]`,
regex: /\.js$/ regex: /\.js$/,
}, },
{ {
output: '[name][extname]', output: '[name][extname]',
regex: /\.xml$/ regex: /\.xml$/,
} },
] ]
// answer from https://stackoverflow.com/questions/74620427/how-to-configure-vite-to-allow-jsx-syntax-in-js-files // answer from https://stackoverflow.com/questions/74620427/how-to-configure-vite-to-allow-jsx-syntax-in-js-files
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => ({ export default defineConfig(({ command, mode }) => ({
plugins: plugins: [
command === 'build' // Preferably set as first plugin.
? [ // peerDepsExternal(),
react({}), react({}),
// eslintPlugin({ // eslintPlugin({
// include: ['src/**/*.js', 'src/**/*.ts', 'src/**/*.tsx', 'src/*.js', 'src/*.ts', 'src/*.tsx'] // include: ['src/**/*.js', 'src/**/*.ts', 'src/**/*.tsx', 'src/*.js', 'src/*.ts', 'src/*.tsx']
// }), // }),
viteMockServe({ viteMockServe({
// default // default
localEnabled: mode === 'mock', localEnabled: mode === 'mock',
mockPath: './mock' mockPath: './mock',
}), }),
viteImagemin(), // splitVendorChunkPlugin(),
// viteCompression(), viteImagemin(),
visualizer() as PluginOption // nodeResolve(),
] // viteCompression(),
: [ visualizer() as any,
react({}), ],
// eslintPlugin({
// include: ['src/**/*.js', 'src/**/*.ts', 'src/**/*.tsx', 'src/*.js', 'src/*.ts', 'src/*.tsx']
// }),
viteMockServe({
// default
localEnabled: mode === 'mock',
mockPath: './mock'
})
],
optimizeDeps: { optimizeDeps: {
// force: true, //to make sure that the cache is updated // force: true, //to make sure that the cache is updated
// disabled: false // disabled: false
}, },
esbuild: {
drop: ['console', 'debugger'],
},
resolve: { resolve: {
extensions: ['.mjs', '.js', '.jsx', '.ts', '.tsx', '.json', '.sass', '.scss'], // 忽略输入的扩展名 extensions: ['.mjs', '.js', '.jsx', '.ts', '.tsx', '.json', '.sass', '.scss'], // 忽略输入的扩展名
alias: [ alias: [
{ find: 'devextreme/ui', replacement: 'devextreme/esm/ui' }, // https://js.devexpress.com/Documentation/Guide/Vue_Components/Add_DevExtreme_to_a_Vue_Application/?search=vite
{
find: 'devextreme/ui',
replacement: 'devextreme/esm/ui',
},
{ find: 'umi', replacement: path.resolve(__dirname, 'src/umi') }, { find: 'umi', replacement: path.resolve(__dirname, 'src/umi') },
{ find: /^~/, replacement: '' }, { find: /^~/, replacement: '' },
{ find: '@', replacement: path.resolve(__dirname, 'src') }, { find: '@', replacement: path.resolve(__dirname, 'src') },
{ {
find: '@components', find: '@components',
replacement: path.resolve(__dirname, 'src/components') replacement: path.resolve(__dirname, 'src/components'),
}, },
{ find: '@config', replacement: path.resolve(__dirname, 'config') }, { find: '@config', replacement: path.resolve(__dirname, 'config') },
{ {
find: 'loadash', find: 'loadash',
replacement: 'lodash-es' replacement: 'lodash-es',
}, },
{ {
find: 'prop-types', find: 'prop-types',
replacement: 'prop-types' replacement: 'prop-types',
} },
] ],
}, },
css: { css: {
preprocessorOptions: { preprocessorOptions: {
less: { less: {
// 支持内联 JavaScript // 支持内联 JavaScript
javascriptEnabled: true javascriptEnabled: true,
} },
} },
}, },
server: { server: {
proxy: proxy[mode] proxy: proxy[mode],
}, },
build: { build: {
// 打包出map文件 // 打包出map文件
sourcemap: false, sourcemap: true,
commonjsOptions: { commonjsOptions: {
transformMixedEsModules: true transformMixedEsModules: true,
// include: [
// './node_modules/devextreme/**',
// './node_modules/devextreme-react/**',
// ],
}, },
minify: true, // minify: false,
assetsDir: assetDir, // assetsDir: '.',
// don't inline anything for demo // assetsInlineLimit: 0,
assetsInlineLimit: 0, // emptyOutDir: true,
emptyOutDir: true,
rollupOptions: { rollupOptions: {
// 参考 https://js.devexpress.com/Documentation/Guide/Vue_Components/Add_DevExtreme_to_a_Vue_Application/?search=vite
treeshake: false,
plugins: [
// {
// name: 'no-treeshake',
// transform(_, id) {
// if (id.includes('ui/data_grid')) {
// return { moduleSideEffects: 'no-treeshake' }
// }
// },
// },
],
output: { output: {
entryFileNames: entryFileNames, // manualChunks: {
assetFileNames: info => { // vendor: ['react', 'react-dom', 'devextreme-react'],
if (info && info.name) { // },
const name = info.name as string // entryFileNames: entryFileNames,
const result = assets.find(a => a.regex.test(name)) // assetFileNames: info => {
if (result) { // if (info && info.name) {
return result.output // const name = info.name as string
} // const result = assets.find(a => a.regex.test(name))
} // if (result) {
return `${assetDir}/[name]-[hash][extname]` // return result.output
}, // }
chunkFileNames: chunkFileNames // }
} // return `${assetDir}/[name]-[hash][extname]`
} // },
} // chunkFileNames: chunkFileNames,
// compact: true,
},
},
},
})) }))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment