Prebundle Node.js dependencies, output a single js file, a package.json file and the dts files.
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:
``bash`
npx prebundle
Run following command to prebundle single dependencies:
`bash
npx prebundle
Dependency Config
Supported dependency config:
$3
Externals to leave as requires of the build.
`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
externals: {
webpack: '../webpack',
},
},
],
};
`You can also configure
externals for all packages like this:`ts
// prebundle.config.mjs
export default {
externals: {
webpack: '../webpack',
},
dependencies: [{ name: 'foo' }, { name: 'foo' }],
};
`$3
Externals for dts.
`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
dtsExternals: ['webpack'],
},
],
};
`$3
Whether to minify the code, default
false.`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
minify: false,
},
],
};
`$3
Copy extra fields from original package.json to target package.json.
`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
packageJsonField: ['options'],
},
],
};
`Following fields will be copied by default:
-
name
- author
- version
- funding
- license
- types
- typing
- typings$3
Callback before bundle.
`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
beforeBundle(task) {
console.log('do something');
},
},
],
};
`$3
Emit extra entry files to map imports.
`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
emitFiles: [
{
path: 'foo.js',
content: module.exports = require('./').foo;,
},
],
},
],
};
`$3
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.
`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
ignoreDts: true,
},
],
};
`$3
Copy all type definitions files rather than bundle them via
rollup-plugin-dts.`ts
// prebundle.config.mjs
export default {
dependencies: [{ name: 'foo', copyDts: true }],
};
`$3
Target ECMAScript version, default
es2021.`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
target: 'es2015',
},
],
};
`$3
Only bundle the dts files, default
false.`ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
dtsOnly: 'true',
},
],
};
`$3
Whether to prettier the code and strip comments, default
false.`ts
// prebundle.config.mjs
export default {
prettier: true,
};
``