npm install merge-strategy
$ ncc <cmd> <opts>
Eg:
$ ncc build input.js -o dist
If building an .mjs
or .js
module inside a "type": "module"
package boundary, an ES module output will be created automatically.
Outputs the Node.js compact build of input.js
into dist/index.js
.
Note: If the input file is using a
.cjs
extension, then so will the corresponding output file. This is useful for packages that want to use.js
files as modules in native Node.js using a"type": "module"
in the package.json file.
build <input-file> [opts]
run <input-file> [opts]
cache clean|dir|size
help
version
-o, --out [dir] Output directory for build (defaults to dist)
-m, --minify Minify output
-C, --no-cache Skip build cache population
-s, --source-map Generate source map
-a, --asset-builds Build nested JS assets recursively, useful for
when code is loaded as an asset eg for workers.
--no-source-map-register Skip source-map-register source map support
-e, --external [mod] Skip bundling 'mod'. Can be used many times
-q, --quiet Disable build summaries / non-error outputs
-w, --watch Start a watched build
-t, --transpile-only Use transpileOnly option with the ts-loader
--v8-cache Emit a build using the v8 compile cache
--license [file] Adds a file containing licensing information to the output
--stats-out [file] Emit webpack stats as json to the specified output file
--target [es] ECMAScript target to use for output (default: es2015)
Learn more: https://webpack.js.org/configuration/target
-d, --debug Show debug logs
For testing and debugging, a file can be built into a temporary directory and executed with full source maps support with the command:
$ ncc run input.js
This is yet another replacement for the npm link
, which has tons of issues and works only for trivial cases. This is
also a replacement for other replacement packages which are either not maintained or a very clunky to use.
- Survives npm install
- All production dependencies and peer dependencies are installed along the main package (unlike npm link)
- Automatic reinstall of the changed dependencies
- No transitive dependencies
- Works with CRA, Vite, etc. hot reloading / hot module replacement (HMR)
- Fully automatic syncronisation between your project and linked dependency
- No 3rd-party config options in your package.json
- Out of the box support for TypeScript transpiler and other watchers
- Bidirectional sync
- Support other than NPM package managers
#Comparison table
https://docs.npmjs.com/cli/v9/commands/npm-link https://github.com/wclr/yalc https://github.com/privatenumber/link https://hirok.io/posts/avoid-npm-link