build(deps-dev): apply updates
[poolifier.git] / rollup.config.mjs
index 23d260d05ee6af1dc374dbfb98007c851dc13479..a6d7eae8e9b583565924217c1d953b2c861d27a7 100644 (file)
@@ -1,16 +1,18 @@
 import * as os from 'node:os'
 import { env } from 'node:process'
-import { dts } from 'rollup-plugin-dts'
+
 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 { defineConfig } from 'rollup'
+import { dts } from 'rollup-plugin-dts'
 
 const availableParallelism = () => {
   let availableParallelism = 1
   try {
+    // eslint-disable-next-line n/no-unsupported-features/node-builtins
     availableParallelism = os.availableParallelism()
   } catch {
     const cpus = os.cpus()
@@ -22,8 +24,8 @@ const availableParallelism = () => {
 }
 
 const isDevelopmentBuild = env.BUILD === 'development'
-const isAnalyzeBuild = env.ANALYZE
-const isDocumentationBuild = env.DOCUMENTATION
+const isAnalyzeBuild = Boolean(env.ANALYZE)
+const isDocumentationBuild = Boolean(env.DOCUMENTATION)
 const sourcemap = env.SOURCEMAP !== 'false'
 
 const maxWorkers = Math.floor(availableParallelism() / 2)
@@ -35,78 +37,68 @@ export default defineConfig([
     output: [
       {
         format: 'cjs',
-        ...(isDevelopmentBuild && {
-          dir: './lib',
-          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
-        })
+          sourcemap,
+        }),
       },
       {
         format: 'esm',
-        ...(isDevelopmentBuild && {
-          dir: './lib',
-          entryFileNames: '[name].mjs',
-          chunkFileNames: '[name]-[hash].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'
+          sourcemap,
+        }),
+      },
     ],
+    external: [/^node:*/],
     plugins: [
       typescript({
         tsconfig: './tsconfig.build.json',
         compilerOptions: {
-          sourceMap: sourcemap
-        }
+          sourceMap: sourcemap,
+        },
       }),
       del({
-        targets: ['./lib/*']
+        targets: ['./lib/*'],
       }),
       isAnalyzeBuild && analyze(),
-      isDocumentationBuild && command('pnpm typedoc')
-    ]
+      isDocumentationBuild && command('pnpm typedoc'),
+    ],
   },
   {
     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({
         targets: ['./lib/dts'],
-        hook: 'buildEnd'
+        hook: 'buildEnd',
       }),
-      isAnalyzeBuild && analyze()
-    ]
-  }
+      isAnalyzeBuild && analyze(),
+    ],
+  },
 ])