nomyo-js/rollup.config.mjs
alpha nerd 2495f1e6e8
Some checks failed
NYX Security Scan / nyx-scan (pull_request) Failing after 5m58s
fix: repair npm install and the rollup build
Three independent breakages, all present on main before this branch:

1. `npm ci` always exited non-zero. The root package.json carried
   "install": "node-gyp-build", but binding.gyp lives in native/, so the
   script ran in a directory with nothing to build:

     gyp: binding.gyp not found (cwd: <repo root>)

   native/package.json already declares that same install script in the
   right place, alongside its binding.gyp and "gypfile": true, so the
   root copy was a duplicate in the wrong package. Removing it also
   clears the now-inaccurate hasInstallScript flag from the lockfile.
   `npm ci` exits 0 again; the addon still builds from native/.

2. `npm run build` failed at the first step. @rollup/plugin-typescript
   requires tslib as a peer, and nothing depended on it directly — it was
   only present transitively as an optional dev dep, so a clean install
   could omit it entirely. Declared explicitly.

3. rollup.config.js used ESM syntax while package.json has no
   "type": "module", so Node parsed it as CommonJS and threw
   "Cannot use import statement outside a module". Node 24 recovers by
   reparsing (with a warning); Node 18 fails outright. Renamed to
   rollup.config.mjs, which is unambiguous on both. Setting
   "type": "module" instead would have broken jest.config.js, which is
   CommonJS.

Verified on Node 18.19.1 and Node 24.18.0: npm ci exits 0, npm run build
produces all three bundles plus declarations, and 76/76 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 11:10:36 +02:00

41 lines
975 B
JavaScript

import typescript from '@rollup/plugin-typescript';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
const target = process.env.TARGET || 'node';
const config = {
input: target === 'browser' ? 'src/browser.ts' : 'src/node.ts',
plugins: [
resolve(),
commonjs(),
typescript({
tsconfig: './tsconfig.json',
declaration: false,
declarationDir: undefined
})
]
};
if (target === 'node') {
config.output = [
{
file: 'dist/node/index.js',
format: 'cjs',
exports: 'named'
},
{
file: 'dist/esm/index.js',
format: 'es'
}
];
config.external = ['crypto', 'https', 'fs', 'path'];
} else if (target === 'browser') {
config.output = {
file: 'dist/browser/index.js',
format: 'es',
name: 'Nomyo'
};
}
export default config;