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
bundledDependencies
in the active package.json- Pass the
--dev-deps
flag to add devDependencies along with production dependencies
- Pass the
-
Generates an empty .npmignore file in the project root
-
If no .npmignore exists,
npm pack
will 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
files
field - 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-all
OR
yarn add npm-pack-all
node node_modules/.bin/npm-pack-all <optional options>
node node_modules/.bin/npm-pack-all
Output 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.tgz
Bundle 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