I'm making an NPM package in TypeScript, and wanted to know how I can make it available for ES and Node modules.
I've set it up with Rollup and a few configs:
rollup.config.js
export default { input: 'build/kimp.js', // built from TS output: [ { file: 'dist/main/kimp.js', format: 'es', strict: false, name: 'module', banner: `#! /usr/bin/env node - Copyright 2020 Herbie Vine - Updated: ${new Date()}` }, { file: 'dist/module/kimp.js', format: 'umd', strict: false, name: 'common', banner: `#! /usr/bin/env node - Copyright 2020 Herbie Vine - Updated: ${new Date()}` } ], plugins: [ terser(), resolve(), json(), commonjs({ include: 'node_modules/**' }) ], external: [ 'crypto' ] }; package.json
{ "name": "kimp", "version": "1.0.0", "description": "Lightweight ID generator", "sideEffects": false, "main": "dist/main/kimp.js", // import() - es6 "module": "dist/module/kimp.js", // require() - node "scripts": { "build": "tsc -p ./src/tsconfig.json", "rollup": "rollup -c" }, "publishConfig": { "registry": "https://npm.pkg.github.com/" }, "keywords": [...], "repository": {...}, "author": "Herbie Vine", "license": "MIT", "bugs": {...}, "homepage": "https://github.com/herbievine/kimp#readme", "devDependencies": {...} } I tried using it in an express app, but I get an error:
const { kimp } = require('kimp'); console.log(kimp) ------ C:\Users\**\kimp-ts\dist\main\kimp.js:3484 export { kimp }; ^^^^^^ This is coming from the built version for es modules
Am I wrong to believe that when node requires a package, it looks at the module key in package.json. Anyways I've been at it for hours, any help would mean a lot cheers 👍