TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

NPM Pack

npm package build

NPM Pack is a tool to help organize a nodejs project by packing the deliverable files into a subfolder with it's own package.json.


NPM Pack can be installed as an npm package itself.

# Install with NPM
npm install @ecrowjs/npmpack --save-dev
# Install with Yarn
yarn add @ecrowjs/npmpack --dev

It can also be installed globally.

# Global install with NPM
npm install -g @ecrowjs/npmpack
# Global install with Yarn
yarn global add @ecrowjs/npmpack


NPM Pack can be interfaced on the command line or through ES2015 imports.

CLI Usage

$ npmpack [...flags]

Example: Select all files under the lib, copy the dist directory, and output them under the pkg folder.

$ npmpack --copy lib/* dist --output pkg

The pkg folder will include all files from lib, the dist folder itself, and your core package files: LICENSE, README, CHANGELOG, and package.json.

|__|__|__<dist files...>
|__|__<lib files...>

Flag Options

Flag Description Type Default
--help Show help boolean
--config Path to JSON config file file
--copy, -c, -f Individual files or directories to include string[] []
--exclude Glob pattern(s) of files to exclude string[] []
--include Glob pattern(s) of files to exclude string[] []
--output Path to output matched files string pkg
--packagejson JSON string to override package.json properties string "{}"
--root The root of your project where package.json resides string .

Configuration File

When using the --config option, you can pass the path to a json file that contains the options you want to pass in.

For example:

$ npmpack --config npmpack.json


    "root": ".",
    "copy": ["dist"],
    "include": ["lib/**/*.ts"],
    "exclude": ["lib/**/*.test.ts"],
    "packagejson": {
        "name": "Changed Package Name",
        "version": "<some_other_version>"

Module Usage

NPM Pack can also be included as a module for one of your custom build script.

// CommonJS
const NPMPack = require('@ecrowjs/npmpack');
// ES6
import * as NPMPack from '@ecrowjs/npmpack');

// Execute NPMPack with some optional configuration.
    root: ".",
    copy: ["dist"],
    include: ["lib/**/*.ts"],
    exclude: ["lib/**/*.test.ts"],
    packagejson: {
        "name": "Changed Package Name",
        "version": "<some_other_version>"

Package Sidebar


npm i @ecrowjs/npmpack

Weekly Downloads






Unpacked Size

20.1 kB

Total Files


Last publish


  • eric-crowell