0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-17 23:44:39 -05:00
ghost/apps/admin-x-settings/vite.config.ts
Daniel Lockyer 53157f3c40 Disabled reporting compressed gzip size
refs https://vitejs.dev/config/build-options.html#build-reportcompressedsize

- this should make building a little bit quicker because it doesn't have
  to calculate the gzip size (I don't think we're likely to hit this
  because we don't have large projects, but it's still nice to clean up
  the output)
2023-11-15 09:11:12 +01:00

97 lines
3.3 KiB
TypeScript

import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js';
import pkg from './package.json';
import react from '@vitejs/plugin-react';
import svgr from 'vite-plugin-svgr';
import {PluginOption} from 'vite';
import {defineConfig} from 'vitest/config';
import {resolve} from 'path';
const outputFileName = pkg.name[0] === '@' ? pkg.name.slice(pkg.name.indexOf('/') + 1) : pkg.name;
const externalPlugin = ({externals}: { externals: Record<string, string> }): PluginOption => {
return {
name: 'external-globals',
apply: 'build',
enforce: 'pre',
resolveId(id) {
if (Object.keys(externals).includes(id)) {
// Naming convention for IDs that will be resolved by a plugin
return `\0${id}`;
}
},
async load(id) {
const [originalId, externalName] = Object.entries(externals).find(([key]) => id === `\0${key}`) || [];
if (originalId) {
const module = await import(originalId);
return Object.keys(module).map(key => (key === 'default' ? `export default ${externalName};` : `export const ${key} = ${externalName}.${key};`)).join('\n');
}
}
};
};
// https://vitejs.dev/config/
export default (function viteConfig() {
return defineConfig({
plugins: [
svgr(),
react(),
externalPlugin({
externals: {
react: 'React',
'react-dom': 'ReactDOM'
}
}),
cssInjectedByJsPlugin()
],
define: {
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
'process.env.VITEST_SEGFAULT_RETRY': 3,
'process.env.DEBUG': false // Shim env var utilized by the @tryghost/nql package
},
preview: {
port: 4174
},
build: {
reportCompressedSize: false,
minify: true,
sourcemap: true,
lib: {
formats: ['es'],
entry: resolve(__dirname, 'src/index.tsx'),
name: pkg.name,
fileName(format) {
if (format === 'umd') {
return `${outputFileName}.umd.js`;
}
return `${outputFileName}.js`;
}
},
commonjsOptions: {
include: [/packages/, /node_modules/]
}
},
test: {
globals: true, // required for @testing-library/jest-dom extensions
environment: 'jsdom',
include: ['./test/unit/**/*'],
testTimeout: process.env.TIMEOUT ? parseInt(process.env.TIMEOUT) : 10000,
...(process.env.CI && { // https://github.com/vitest-dev/vitest/issues/1674
minThreads: 1,
maxThreads: 2
})
},
resolve: {
// Shim node modules utilized by the @tryghost/nql package
alias: {
fs: 'node-shim.cjs',
path: 'node-shim.cjs',
util: 'node-shim.cjs',
// @TODO: Remove this when @tryghost/nql is updated
mingo: resolve(__dirname, '../../node_modules/mingo/dist/mingo.js')
}
}
});
});