2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-10-24 01:47:39 +00:00
Files
InvenTree/src/frontend/vite.lib.config.ts
Oliver 0e0abf2d75 [plugin] Library updates (#10070)
* 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 />
2025-07-25 01:23:34 +10:00

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__
}
})
)
);