Skip to content

Commit c599182

Browse files
authored
feat(pluginutils): add native node es modules support (#419)
* feat(pluginutils): add native node es modules support Ref #412 #413 Enable native node es modules via "exports" field in package.json. Added custom plugin to generate nested package.json with `{"type": "module"}` to prevent mjs extension usage. * Export emitModulePackageFile from shared config * Bundle estree-walker * Swap options
1 parent f3cc2be commit c599182

File tree

3 files changed

+27
-12
lines changed

3 files changed

+27
-12
lines changed

packages/pluginutils/package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"bugs": {
1313
"url": "https://github.com/rollup/plugins/issues"
1414
},
15-
"main": "dist/index.js",
15+
"main": "./dist/cjs/index.js",
1616
"engines": {
1717
"node": ">= 8.0.0"
1818
},
@@ -75,12 +75,17 @@
7575
"!**/types.ts"
7676
]
7777
},
78-
"module": "dist/index.es.js",
78+
"exports": {
79+
"require": "./dist/cjs/index.js",
80+
"import": "./dist/es/index.js"
81+
},
82+
"module": "./dist/es/index.js",
7983
"nyc": {
8084
"extension": [
8185
".js",
8286
".ts"
8387
]
8488
},
89+
"type": "commonjs",
8590
"types": "types/index.d.ts"
8691
}

packages/pluginutils/rollup.config.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
import { builtinModules } from 'module';
2+
13
import commonjs from '@rollup/plugin-commonjs';
24
import resolve from '@rollup/plugin-node-resolve';
35
import typescript from '@rollup/plugin-typescript';
46

7+
import { emitModulePackageFile } from '../../shared/rollup.config';
8+
59
import pkg from './package.json';
610

711
export default {
@@ -11,16 +15,9 @@ export default {
1115
commonjs({ include: '../../node_modules/.pnpm/registry.npmjs.org/**' }),
1216
typescript({ include: '**/*.{ts,js}', module: 'esnext' })
1317
],
14-
external: Object.keys(pkg.dependencies).concat('path', 'util'),
18+
external: [...builtinModules, 'picomatch'],
1519
output: [
16-
{
17-
format: 'cjs',
18-
file: pkg.main,
19-
exports: 'named'
20-
},
21-
{
22-
format: 'es',
23-
file: pkg.module
24-
}
20+
{ file: pkg.main, format: 'cjs', exports: 'named' },
21+
{ file: pkg.module, format: 'es', plugins: [emitModulePackageFile()] }
2522
]
2623
};

shared/rollup.config.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,16 @@ export function createConfig(pkg) {
2323
]
2424
};
2525
}
26+
27+
export function emitModulePackageFile() {
28+
return {
29+
name: 'emit-module-package-file',
30+
generateBundle() {
31+
this.emitFile({
32+
type: 'asset',
33+
fileName: 'package.json',
34+
source: `{"type":"module"}`
35+
});
36+
}
37+
};
38+
}

0 commit comments

Comments
 (0)