mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 12:06:44 +00:00
* 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
95 lines
2.6 KiB
TypeScript
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__
|
|
}
|
|
};
|
|
});
|