chore: v2.4.10
[poolifier.git] / rollup.config.mjs
index f301a0871b09c655762b1ceee7495a9fa2af8dc3..017ca1b9bee2ea0a1ee01ec6939248a7a23f0a3a 100644 (file)
@@ -1,9 +1,8 @@
-import typescript from 'rollup-plugin-typescript2'
+import terser from '@rollup/plugin-terser'
+import typescript from '@rollup/plugin-typescript'
 import analyze from 'rollup-plugin-analyzer'
-import { terser } from 'rollup-plugin-terser'
-import del from 'rollup-plugin-delete'
 import command from 'rollup-plugin-command'
-import istanbul from 'rollup-plugin-istanbul'
+import del from 'rollup-plugin-delete'
 
 const isDevelopmentBuild = process.env.BUILD === 'development'
 const isAnalyze = process.env.ANALYZE
@@ -11,26 +10,48 @@ const isDocumentation = process.env.DOCUMENTATION
 
 export default {
   input: 'src/index.ts',
-  output: {
-    ...(isDevelopmentBuild ? { dir: 'lib' } : { file: 'lib/index.js' }),
-    format: 'cjs',
-    sourcemap: !!isDevelopmentBuild,
-    ...(isDevelopmentBuild && { preserveModules: true }),
-    ...(isDevelopmentBuild && { preserveModulesRoot: 'src' }),
-    ...(!isDevelopmentBuild && { plugins: [terser({ numWorkers: 2 })] })
-  },
-  external: ['async_hooks', 'cluster', 'events', 'worker_threads'],
+  strictDeprecations: true,
+  output: [
+    {
+      ...(isDevelopmentBuild ? { dir: 'lib' } : { file: 'lib/index.js' }),
+      format: 'cjs',
+      sourcemap: !!isDevelopmentBuild,
+      ...(isDevelopmentBuild && {
+        preserveModules: true,
+        preserveModulesRoot: 'src'
+      }),
+      ...(!isDevelopmentBuild && { plugins: [terser({ maxWorkers: 2 })] })
+    },
+    {
+      ...(isDevelopmentBuild ? { dir: 'lib' } : { file: 'lib/index.mjs' }),
+      format: 'esm',
+      sourcemap: !!isDevelopmentBuild,
+      ...(isDevelopmentBuild && {
+        entryFileNames: '[name].mjs',
+        preserveModules: true,
+        preserveModulesRoot: 'src'
+      }),
+      ...(!isDevelopmentBuild && { plugins: [terser({ maxWorkers: 2 })] })
+    }
+  ],
+  external: [
+    'node:async_hooks',
+    'node:cluster',
+    'node:crypto',
+    'node:events',
+    'node:os',
+    'node:worker_threads'
+  ],
   plugins: [
     typescript({
       tsconfig: isDevelopmentBuild
         ? 'tsconfig.development.json'
-        : 'tsconfig.json'
+        : 'tsconfig.production.json'
     }),
-    isDevelopmentBuild && istanbul(),
     del({
       targets: ['lib/*']
     }),
     isAnalyze && analyze(),
-    isDocumentation && command('npm run typedoc')
+    isDocumentation && command('pnpm run typedoc')
   ]
 }