Skip to content

Repository files navigation

Prebundle

Prebundle Node.js dependencies, output a single js file, a package.json file and the dts files.

Based on ncc and rollup-plugin-dts.

npm versionlicense

Motivation

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.

Command

Run following command to prebundle all dependencies:

npx prebundle

Run following command to prebundle single dependencies:

npx prebundle <pkgName># For example, prebundle commander
npx prebundle commander

Dependency Config

Supported dependency config:

externals

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'}],};

dtsExternals

Externals for dts.

// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',dtsExternals: ['webpack'],},],};

minify

Whether to minify the code, default false.

// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',minify: false,},],};

packageJsonField

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:

  • name
  • author
  • version
  • funding
  • license
  • types
  • typing
  • typings

beforeBundle

Callback before bundle.

// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',beforeBundle(task){console.log('do something');},},],};

emitFiles

Emit extra entry files to map imports.

// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',emitFiles: [{path: 'foo.js',content: `module.exports = require('./').foo;`,},],},],};

ignoreDts

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,},],};

copyDts

Copy all type definitions files rather than bundle them via rollup-plugin-dts.

// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',copyDts: true}],};

target

Target ECMAScript version, default es2021.

// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',target: 'es2015',},],};

dtsOnly

Only bundle the dts files, default false.

// prebundle.config.mjsexportdefault{dependencies: [{name: 'foo',dtsOnly: 'true',},],};

prettier

Whether to prettier the code and strip comments, default false.

// prebundle.config.mjsexportdefault{prettier: true,};

About

Prebundle Node.js dependencies, output a single js file, a package.json file and the dts files.

Topics

Resources

Stars

28 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages