2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 12:06:44 +00:00
InvenTree/src/frontend/vite.config.ts
Oliver 5e7e258289
[Plugin] Plugin context (#9439)
* Pass more stuff to window

* Expose form functions to plugin context

* Breaking: Render plugin component in context tree

- Required due to createRoot function
- Adds necessary context providers

* Fix context

* Provide MantineThemeContext

* Bundle mantine/core

* Hack for useNavigate within ApiForm

- Errors out if called within plugin context
- Workaround to catch the error

* Update build cmd

* Define config for building "Library" mode

* Update package.json

* Add basic index file

* Factor out ApiEndpoints

* factor out ModelType

* Factor out role enums

* Further refactoring

* More refactoring

* Cleanup

* Expose apiUrl function

* Add instance data to plugin context type def

* Tweaks for loading plugin components

- LanguageContext must be on the inside

* Tweak StylishText

* Externalize notifications system

* Update lingui config

* Add functions for checking plugin interface version

* Extract package version at build time

* Enhance version checking

* Revert variable name change

* Public package

* Add README.md

* adjust packge name

* Adjust name to include org

* Update project files

* Add basic changelog info

* Refactoring to expose URL functions

* Refactor navigation functions

* Update package and README

* Improve navigateToLink function

* Refactor stylish text

- Move into ./lib
- Do not require user state

* Revert changes

- StylishText throws error in plugin
- Low priority, can work out later

* expose function to refresh page index

* Provide RemoteComponent with a method to reload itself

* Bump version

* Cleanup tests

* Prevent duplicate --emptyOutDir arg

* Tweak playwright tests

* Expose role and permission enums

* Fix imports

* Updated docs

* Fix spelling, typos, etc

* Include more package version information

* Expose more version context

* Cleanup

* Probably don't need hooks

* Fix links

* Docs updates

* Fix links
2025-04-16 00:30:34 +10:00

95 lines
2.6 KiB
TypeScript

import { platform, release } from 'node:os';
import { codecovVitePlugin } from '@codecov/vite-plugin';
import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin';
import react from '@vitejs/plugin-react';
import license from 'rollup-plugin-license';
import { defineConfig, splitVendorChunkPlugin } from 'vite';
import istanbul from 'vite-plugin-istanbul';
import { __INVENTREE_VERSION_INFO__ } from './version-info';
// Detect if the current environment is WSL
// Required for enabling file system polling
const IS_IN_WSL = platform().includes('WSL') || release().includes('WSL');
if (IS_IN_WSL) {
console.log('WSL detected: using polling for file system events');
}
// Output directory for the built files
const OUTPUT_DIR = '../../src/backend/InvenTree/web/static/web';
// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
return {
plugins: [
react({
babel: {
plugins: ['macros']
}
}),
vanillaExtractPlugin(),
splitVendorChunkPlugin(),
license({
sourcemap: true,
thirdParty: {
includePrivate: true,
multipleVersions: true,
output: {
file: `${OUTPUT_DIR}/.vite/dependencies.json`,
template(dependencies) {
return JSON.stringify(dependencies);
}
}
}
}),
istanbul({
include: ['src/*', 'lib/*'],
exclude: ['node_modules', 'test/'],
extension: ['.js', '.ts', '.tsx'],
requireEnv: true
}),
codecovVitePlugin({
enableBundleAnalysis: process.env.CODECOV_TOKEN !== undefined,
bundleName: 'pui_v1',
uploadToken: process.env.CODECOV_TOKEN
})
],
// When building, set the base path to an empty string
// This is required to ensure that the static path prefix is observed
base: command == 'build' ? '' : undefined,
build: {
manifest: true,
outDir: OUTPUT_DIR,
sourcemap: true
},
resolve: {
alias: {
'@lib': '/lib'
}
},
server: {
proxy: {
'/media': {
target: 'http://localhost:8000',
changeOrigin: true,
secure: true
},
'/static': {
target: 'http://localhost:8000',
changeOrigin: true,
secure: true
}
},
watch: {
// Use polling only for WSL as the file system doesn't trigger notifications for Linux apps
// Ref: https://github.com/vitejs/vite/issues/1153#issuecomment-785467271
usePolling: IS_IN_WSL
}
},
define: {
...__INVENTREE_VERSION_INFO__
}
};
});