UNPKG

@strapi/strapi

Version:

An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite

114 lines (111 loc) 3.35 kB
import browserslistToEsbuild from 'browserslist-to-esbuild'; import react from '@vitejs/plugin-react-swc'; import { getUserConfig } from '../core/config.mjs'; import { loadStrapiMonorepo } from '../core/monorepo.mjs'; import { getMonorepoAliases } from '../core/aliases.mjs'; import { buildFilesPlugin } from './plugins.mjs'; const resolveBaseConfig = async (ctx)=>{ const target = browserslistToEsbuild(ctx.target); return { root: ctx.cwd, base: ctx.basePath, build: { emptyOutDir: false, outDir: ctx.distDir, target }, cacheDir: 'node_modules/.strapi/vite', configFile: false, define: { 'process.env': ctx.env }, envPrefix: 'STRAPI_ADMIN_', optimizeDeps: { include: [ // pre-bundle React dependencies to avoid React duplicates, // even if React dependencies are not direct dependencies // https://react.dev/warnings/invalid-hook-call-warning#duplicate-react 'react', `react/jsx-runtime`, 'react-dom/client', 'styled-components', 'react-router-dom' ] }, resolve: { // https://react.dev/warnings/invalid-hook-call-warning#duplicate-react dedupe: [ 'react', 'react-dom', 'react-router-dom', 'styled-components' ] }, plugins: [ react(), buildFilesPlugin(ctx) ] }; }; const resolveProductionConfig = async (ctx)=>{ const { options: { minify, sourcemaps } } = ctx; const baseConfig = await resolveBaseConfig(ctx); return { ...baseConfig, logLevel: 'silent', mode: 'production', build: { ...baseConfig.build, assetsDir: '', minify, sourcemap: sourcemaps, rollupOptions: { input: { strapi: ctx.entry } } } }; }; const resolveDevelopmentConfig = async (ctx)=>{ const monorepo = await loadStrapiMonorepo(ctx.cwd); const baseConfig = await resolveBaseConfig(ctx); return { ...baseConfig, mode: 'development', resolve: { ...baseConfig.resolve, alias: { ...baseConfig.resolve?.alias, ...getMonorepoAliases({ monorepo }) } }, server: { cors: false, middlewareMode: true, open: ctx.options.open, hmr: { overlay: false, server: ctx.options.hmrServer, clientPort: ctx.options.hmrClientPort } }, appType: 'custom' }; }; const USER_CONFIGS = [ 'vite.config.js', 'vite.config.mjs', 'vite.config.ts' ]; const mergeConfigWithUserConfig = async (config, ctx)=>{ const userConfig = await getUserConfig(USER_CONFIGS, ctx); if (userConfig) { return userConfig(config); } return config; }; export { mergeConfigWithUserConfig, resolveDevelopmentConfig, resolveProductionConfig }; //# sourceMappingURL=config.mjs.map