A simple utility to package all node_modules dependencies when running npm pack (not devDependencies)
This can be useful when wanting to ship dependencies as part of the artifact. While one can install dependencies on a deployed target using package-lock.json and yarn.lock, there can be downsides to that approach, as well.
npm-pack-all utility does the following:
-
Backs up the following files
- package.json
- package-lock.json
- yarn.lock
- .npmignore
-
Adds all dependencies as
bundledDependenciesin the active package.json- Pass the
--dev-depsflag to add devDependencies along with production dependencies
- Pass the
-
Generates an empty .npmignore file in the project root
-
If no .npmignore exists,
npm packwill use .gitignore to exclude modules(node_modules by default in many cases)
-
-
Calls
npm -dd pack-
The following will be packed into a .tgz archive:
- Any files (via glob) called out in the package.json
filesfield - All production dependencies (and their dependencies)
- If
--dev-deps, all devDependencies (and their dependencies)
- Any files (via glob) called out in the package.json
-
-
Restores the files that were backed up
npm install npm-pack-allOR
yarn add npm-pack-allnode node_modules/.bin/npm-pack-all <optional options>node node_modules/.bin/npm-pack-allOutput your .tgz artifact to a different directory (or with a different name)
node node_modules/.bin/npm-pack-all --output build/OR
node node_modules/.bin/npm-pack-all --output build/artifact.tgzBundle all production dependencies AND devDependencies in the artifact (use with care -- your artifact will balloon)
node node_modules/.bin/npm-pack-all --dev-deps --output build/artifact.tgz