mirror of
https://github.com/inventree/InvenTree.git
synced 2025-10-24 01:47:39 +00:00
* Expose lingui modules to plugins * Add i18n object to plugin context * Expose form types * Update package.json requirements * Externalize react and mantine when building @inventreedb/ui components * Externalize lingui packages too * Extern <AddItemButton />
84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
/*
|
|
* This config file is used to build the common InvenTree UI library components,
|
|
* which are distributed via NPM - to facilitate plugin development.
|
|
*
|
|
* Note that we externalize a number of common libraries,
|
|
* so that plugins can use the same versions as the main InvenTree application.
|
|
*
|
|
* Externalizing libraries is critical here,
|
|
* to ensure that the plugins do not bundle their own versions of these libraries,
|
|
* so that the plugin uses the same React instance as the main application.
|
|
*/
|
|
|
|
import { resolve } from 'node:path';
|
|
import { defineConfig, mergeConfig } from 'vite';
|
|
import dts from 'vite-plugin-dts';
|
|
import { viteExternalsPlugin } from 'vite-plugin-externals';
|
|
import viteConfig from './vite.config';
|
|
|
|
import { __INVENTREE_VERSION_INFO__ } from './version-info';
|
|
|
|
export default defineConfig((cfg) =>
|
|
mergeConfig(
|
|
viteConfig(cfg),
|
|
defineConfig({
|
|
resolve: {},
|
|
build: {
|
|
minify: false,
|
|
manifest: true,
|
|
outDir: 'dist',
|
|
sourcemap: true,
|
|
rollupOptions: {
|
|
output: {
|
|
preserveModules: true,
|
|
preserveModulesRoot: 'lib',
|
|
globals: {
|
|
react: 'React',
|
|
'react-dom': 'ReactDOM',
|
|
'@lingui/core': 'LinguiCore',
|
|
'@lingui/react': 'LinguiReact',
|
|
'@mantine/core': 'MantineCore',
|
|
'@mantine/notifications': 'MantineNotifications'
|
|
}
|
|
},
|
|
external: [
|
|
'react',
|
|
'react-dom',
|
|
'@lingui/core',
|
|
'@lingui/react',
|
|
'@mantine/core',
|
|
'@mantine/notifications'
|
|
]
|
|
},
|
|
lib: {
|
|
entry: {
|
|
index: resolve(__dirname, 'lib/index.ts')
|
|
},
|
|
name: 'InvenTree',
|
|
formats: ['es']
|
|
}
|
|
},
|
|
plugins: [
|
|
dts({
|
|
entryRoot: 'lib',
|
|
outDir: 'dist',
|
|
insertTypesEntry: true, // Ensures `dist/index.d.ts` is generated
|
|
exclude: ['node_modules/**/*', 'src/**/*']
|
|
}),
|
|
viteExternalsPlugin({
|
|
react: 'React',
|
|
'react-dom': 'ReactDOM',
|
|
ReactDom: 'ReactDOM',
|
|
'@lingui/core': 'LinguiCore',
|
|
'@lingui/react': 'LinguiReact',
|
|
'@mantine/core': 'MantineCore',
|
|
'@mantine/notifications': 'MantineNotifications'
|
|
})
|
|
],
|
|
define: {
|
|
...__INVENTREE_VERSION_INFO__
|
|
}
|
|
})
|
|
)
|
|
);
|