prebundle
Version:
Prebundle Node.js dependencies, output a single js file, a package.json file and the dts files.
215 lines (168 loc) • 3.45 kB
Markdown
Prebundle Node.js dependencies, output a single js file, a package.json file and the dts files.
Based on [ncc](https://github.com/vercel/ncc) and [rollup-plugin-dts](https://www.npmjs.com/package/rollup-plugin-dts).
<p>
<a href="https://npmjs.com/package/prebundle">
<img src="https://img.shields.io/npm/v/prebundle?style=flat-square&colorA=564341&colorB=EDED91" alt="npm version" />
</a>
<img src="https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square&colorA=564341&colorB=EDED91" alt="license" />
</p>
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 <pkgName>
npx prebundle commander
```
Supported dependency config:
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' }],
};
```
Externals for dts.
```ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
dtsExternals: ['webpack'],
},
],
};
```
Whether to minify the code, default `false`.
```ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
minify: false,
},
],
};
```
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`
Callback before bundle.
```ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
beforeBundle(task) {
console.log('do something');
},
},
],
};
```
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;`,
},
],
},
],
};
```
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,
},
],
};
```
Target ECMAScript version, default `es2021`.
```ts
// prebundle.config.mjs
export default {
dependencies: [
{
name: 'foo',
target: 'es2015',
},
],
};
```
Whether to prettier the code and strip comments, default `false`.
```ts
// prebundle.config.mjs
export default {
prettier: true,
};
```