Prebundle Node.js dependencies, output a single js file, a package.json file and the dts files.
Based on ncc and rollup-plugin-dts.
Prebundle is used to:
- Reduce dependencies of core packages, install faster.
- Improve stability by locking the sub-dependency version .
- Fix peer dependency warning of some packages.
Run following command to prebundle all dependencies:
npx prebundleRun following command to prebundle single dependencies:
npx prebundle <pkgName># For example, prebundle commander
npx prebundle commanderSupported dependency config:
Externals to leave as requires of the build.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',externals: {webpack: '../webpack',},},],};You can also configure externals for all packages like this:
// prebundle.config.mjsexportdefault{externals: {webpack: '../webpack',},dependencies: [{name: 'foo'},{name: 'foo'}],};Externals for dts.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',dtsExternals: ['webpack'],},],};Whether to minify the code, default false.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',minify: false,},],};Copy extra fields from original package.json to target package.json.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',packageJsonField: ['options'],},],};Following fields will be copied by default:
nameauthorversionfundinglicensetypestypingtypings
Callback before bundle.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',beforeBundle(task){console.log('do something');},},],};Emit extra entry files to map imports.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',emitFiles: [{path: 'foo.js',content: `module.exports = require('./').foo;`,},],},],};Ignore the original .d.ts declaration file, then generate a fake .d.ts file.
This can be used to reduce file size for the packages that do not require type definitions, such as webpack plugin.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',ignoreDts: true,},],};Copy all type definitions files rather than bundle them via rollup-plugin-dts.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',copyDts: true}],};Target ECMAScript version, default es2021.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',target: 'es2015',},],};Only bundle the dts files, default false.
// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',dtsOnly: 'true',},],};Whether to prettier the code and strip comments, default false.
// prebundle.config.mjsexportdefault{prettier: true,};