-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Description
What was unclear or otherwise insufficient?
Hello, yesterday I run into a build issue that the migration classes were getting mangled when creating a production build for a vue project with vite.
he: Gre migration name is wrong. Migration class name should have a JavaScript timestamp appended.
at ? (/assets/index-CfBXyhU_.js:220:193588)
at Array.map(app:///<anonymous>)
at hg.getMigrations(/assets/index-CfBXyhU_.js:220:193494)
at hg.executePendingMigrations(/assets/index-CfBXyhU_.js:220:188761)
at async dZ.runMigrations(/assets/index-CfBXyhU_.js:220:610108)
at async dZ.initialize(/assets/index-CfBXyhU_.js:220:608756)
at async Xre(/assets/index-CfBXyhU_.js:240:28843)I found the solution in the end and would like to add it to the documentation.
Recommended Fix
Are you interested in a pull request that adds this information to the documentation in a similar way as is done for webpack? https://typeorm.io/faq#how-to-use-webpack-for-the-backend
The solution is using terser as for the minify with a regex matching the migration class names in mangle.keep_classnames and compress.keep_classnames.
This is the "vite.config.ts" that fixed the issue:
import legacy from '@vitejs/plugin-legacy';
import vue from '@vitejs/plugin-vue';
import path from 'path';
import { defineConfig } from 'vite';
// https://vitejs.dev/config/
export default defineConfig({
build: {
sourcemap: true,
minify: 'terser',
terserOptions: {
mangle: { keep_classnames: /^Migrations\d+$/ },
compress: { keep_classnames: /^Migrations\d+$/ },
},
},
plugins: [vue(), legacy()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
});Let me know if you want a pull-request where this information is added to https://github.com/typeorm/typeorm/blob/master/docs/faq.md
Additional Context
No response
Are you willing to resolve this issue by submitting a Pull Request?
Yes, I have the time, and I know how to start.