/// /// import { defineConfig } from 'vite'; import solidPlugin from 'vite-plugin-solid'; import suidPlugin from '@suid/vite-plugin'; import solidSvg from 'vite-plugin-solid-svg'; import { execSync } from 'child_process'; // yarn add --dev @esbuild-plugins/node-globals-polyfill import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; // yarn add --dev @esbuild-plugins/node-modules-polyfill import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfill'; // You don't need to add this to deps, it's included by @esbuild-plugins/node-modules-polyfill import rollupNodePolyFill from 'rollup-plugin-node-polyfills'; export default defineConfig(({ command, mode, ssrBuild }) => { const commitDate = execSync('git log -1 --format=%cI').toString().trimEnd(); const branchName = execSync('git rev-parse --abbrev-ref HEAD') .toString() .trimEnd(); const commitHash = execSync('git rev-parse HEAD').toString().trimEnd(); const lastCommitMessage = execSync('git show -s --format=%s') .toString() .trimEnd(); process.env.VITE_GIT_COMMIT_DATE = commitDate; process.env.VITE_GIT_BRANCH_NAME = branchName; process.env.VITE_GIT_COMMIT_HASH = commitHash; process.env.VITE_GIT_LAST_COMMIT_MESSAGE = lastCommitMessage; return { plugins: [ suidPlugin(), solidPlugin(), solidSvg({ /** * If true, will export as JSX component if `as` isn't specified. * * Otherwise will export as url, or as JSX component if '?as=component-solid' */ defaultAsComponent: false, }), ], test: { environment: 'jsdom', globals: true, transformMode: { web: [/\.[jt]sx?$/], }, setupFiles: './setupVitest.ts', // solid needs to be inline to work around // a resolution issue in vitest: deps: { inline: [/solid-js/], }, // if you have few tests, try commenting one // or both out to improve performance: threads: false, isolate: false, }, build: { target: 'esnext', polyfillDynamicImport: false, }, resolve: { conditions: ['development', 'browser'], alias: { // This Rollup aliases are extracted from @esbuild-plugins/node-modules-polyfill, // see https://github.com/remorses/esbuild-plugins/blob/master/node-modules-polyfill/src/polyfills.ts // process and buffer are excluded because already managed // by node-globals-polyfill util: 'rollup-plugin-node-polyfills/polyfills/util', sys: 'util', events: 'rollup-plugin-node-polyfills/polyfills/events', stream: 'rollup-plugin-node-polyfills/polyfills/stream', path: 'rollup-plugin-node-polyfills/polyfills/path', querystring: 'rollup-plugin-node-polyfills/polyfills/qs', punycode: 'rollup-plugin-node-polyfills/polyfills/punycode', url: 'rollup-plugin-node-polyfills/polyfills/url', string_decoder: 'rollup-plugin-node-polyfills/polyfills/string-decoder', http: 'rollup-plugin-node-polyfills/polyfills/http', https: 'rollup-plugin-node-polyfills/polyfills/http', os: 'rollup-plugin-node-polyfills/polyfills/os', assert: 'rollup-plugin-node-polyfills/polyfills/assert', constants: 'rollup-plugin-node-polyfills/polyfills/constants', _stream_duplex: 'rollup-plugin-node-polyfills/polyfills/readable-stream/duplex', _stream_passthrough: 'rollup-plugin-node-polyfills/polyfills/readable-stream/passthrough', _stream_readable: 'rollup-plugin-node-polyfills/polyfills/readable-stream/readable', _stream_writable: 'rollup-plugin-node-polyfills/polyfills/readable-stream/writable', _stream_transform: 'rollup-plugin-node-polyfills/polyfills/readable-stream/transform', timers: 'rollup-plugin-node-polyfills/polyfills/timers', console: 'rollup-plugin-node-polyfills/polyfills/console', vm: 'rollup-plugin-node-polyfills/polyfills/vm', zlib: 'rollup-plugin-node-polyfills/polyfills/zlib', tty: 'rollup-plugin-node-polyfills/polyfills/tty', domain: 'rollup-plugin-node-polyfills/polyfills/domain', }, }, define: command === 'serve' ? { // By default, Vite doesn't include shims for NodeJS/ // necessary for segment analytics lib to work global: {}, } : {}, }; });