@ecrowjs/npmpack

A clean way to publish an NPM Package in your workspace by preparing it in a subfolder.

Usage no npm install needed!

<script type="module">
  import ecrowjsNpmpack from 'https://cdn.skypack.dev/@ecrowjs/npmpack';
</script>

README

@eCrowJS

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.

Installation

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

Usage

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
|__|__<...>
|___lib
|___|___<...>
|___pkg
|__|__dist
|__|__|__<dist files...>
|__|__<lib files...>
|__|__CHANGLOG
|__|__LICENSE
|__|__README.md
|__|__package.json
|__CHANGLOG
|__LICENSE
|__README.md
|__package.json

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

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.
NPMPack.execute({
    root: ".",
    copy: ["dist"],
    include: ["lib/**/*.ts"],
    exclude: ["lib/**/*.test.ts"],
    packagejson: {
        "name": "Changed Package Name",
        "version": "<some_other_version>"
    }
})