import * as os from 'node:os'
-import { dts } from 'rollup-plugin-dts'
+import { env } from 'node:process'
+
import terser from '@rollup/plugin-terser'
import typescript from '@rollup/plugin-typescript'
+import { defineConfig } from 'rollup'
import analyze from 'rollup-plugin-analyzer'
import command from 'rollup-plugin-command'
import del from 'rollup-plugin-delete'
+import { dts } from 'rollup-plugin-dts'
const availableParallelism = () => {
let availableParallelism = 1
return availableParallelism
}
-const isDevelopmentBuild = process.env.BUILD === 'development'
-const isAnalyzeBuild = process.env.ANALYZE
-const isDocumentationBuild = process.env.DOCUMENTATION
+const isDevelopmentBuild = env.BUILD === 'development'
+const isAnalyzeBuild = Boolean(env.ANALYZE)
+const isDocumentationBuild = Boolean(env.DOCUMENTATION)
+const sourcemap = env.SOURCEMAP !== 'false'
const maxWorkers = Math.floor(availableParallelism() / 2)
-export default [
+export default defineConfig([
{
input: './src/index.ts',
strictDeprecations: true,
output: [
{
format: 'cjs',
- ...(isDevelopmentBuild && {
- dir: './lib',
- sourcemap: true,
- preserveModules: true,
- preserveModulesRoot: './src'
- }),
- ...(!isDevelopmentBuild && {
- file: './lib/index.js',
- plugins: [terser({ maxWorkers })]
+ ...(isDevelopmentBuild
+ ? {
+ dir: './lib',
+ entryFileNames: '[name].cjs',
+ chunkFileNames: '[name]-[hash].cjs',
+ preserveModules: true,
+ preserveModulesRoot: './src'
+ }
+ : {
+ file: './lib/index.cjs',
+ plugins: [terser({ maxWorkers })]
+ }),
+ ...(sourcemap && {
+ sourcemap
})
},
{
format: 'esm',
- ...(isDevelopmentBuild && {
- dir: './lib',
- sourcemap: true,
- entryFileNames: '[name].mjs',
- preserveModules: true,
- preserveModulesRoot: './src'
- }),
- ...(!isDevelopmentBuild && {
- file: './lib/index.mjs',
- plugins: [terser({ maxWorkers })]
+ ...(isDevelopmentBuild
+ ? {
+ dir: './lib',
+ entryFileNames: '[name].mjs',
+ chunkFileNames: '[name]-[hash].mjs',
+ preserveModules: true,
+ preserveModulesRoot: './src'
+ }
+ : {
+ file: './lib/index.mjs',
+ plugins: [terser({ maxWorkers })]
+ }),
+ ...(sourcemap && {
+ sourcemap
})
}
],
- external: [
- 'node:async_hooks',
- 'node:cluster',
- 'node:crypto',
- 'node:events',
- 'node:fs',
- 'node:os',
- 'node:perf_hooks',
- 'node:worker_threads'
- ],
+ external: [/^node:*/],
plugins: [
typescript({
- tsconfig: isDevelopmentBuild
- ? './tsconfig.development.json'
- : './tsconfig.production.json'
+ tsconfig: './tsconfig.build.json',
+ compilerOptions: {
+ sourceMap: sourcemap
+ }
}),
del({
targets: ['./lib/*']
},
{
input: './lib/dts/index.d.ts',
+ strictDeprecations: true,
output: [{ format: 'esm', file: './lib/index.d.ts' }],
- external: [
- 'node:async_hooks',
- 'node:cluster',
- 'node:events',
- 'node:perf_hooks',
- 'node:worker_threads'
- ],
+ external: [/^node:*/],
plugins: [
dts(),
del({
isAnalyzeBuild && analyze()
]
}
-]
+])