ncat
Node CLI to concatenate multiple files, with their sourcemaps and optionally stdin, a banner and a footer.
Installation
$ npm i -g|-D ncat
Usage
$ ncat [<FILES ...>] [OPTIONS] [-o|--output <OUTPUT_FILE>]
The arguments may be a list of files:
$ ncat file_1.js file_2.js -o dist/bundle.js
or a list of globs:
$ ncat 'src/**/*.js !**/rainbow.js' src/**/{cake,unicorn}.css -o dist/bundle.js
If file is a single dash (-
) ncat reads from the standard input:
$ echo 'Insert between file_1.js and file_2.js' | ncat file_1.js - file_2.js -o dist/bundle.js
If -o|--output
is omitted ncat writes to the standard input:
$ ncat file_1.js file_2.js | uglifyjs > dist/bundle.min.js
Options
Name | Type | Default | Description |
---|---|---|---|
-o, --output |
{String} |
undefined |
Output File |
-m, --map |
{Boolean} |
false |
Create an external sourcemap (including the sourcemaps of existing files) |
-e, --map-embed |
{Boolean} |
false |
Embed the code in the sourcemap (only apply to code without an existing sourcemap) |
-b, --banner |
{Boolean\|String} |
false |
Add a banner built with the package.json file. Optionally pass the path to a .js file containing custom banner that can be called with require() |
-f, --footer |
{String} |
undefined |
The path to .js file containing custom footer that can be called with require() |
-h, --help |
{Boolean} |
false |
CLI Help |
-v, --version |
{Boolean} |
false |
CLI Version |
Examples
Concatenate files and standard input
Files
---------- file_1minjs ----------< First part of JS ... > ---------- file_2js ----------<Second part of JS code ... >
Command
$ uglifyjs file_2.js | ncat file_1.min.js - --output dist/bundle.js
Result
---------- dist/bundlejs ----------< First part of JS ... > < Second part of JS ... >
Concatenate with sourcemaps
Files
---------- file_1js ----------< First part of JS code ... > /*# sourceMappingURL=file_1.js.map */ ---------- file_1jsmap ----------"version": 3"file": "file_1.js" ... ---------- file_2js ----------< Second part of JS code ... > /*# sourceMappingURL=file_2.js.map */ ---------- file_2jsmap ----------"version": 3"file": "file_2.js" ...
Command
$ ncat file_1.js file_2.js --map --output dist/bundle.js
Result
---------- dist/bundlejs ----------< First part of JS code ... > < Second part of JS code ... > /*# sourceMappingURL=bundle.map */ ---------- bundlejsmap ----------"version": 3"file": "bundle.js" ...
Add a banner to a file
Files
---------- bootstrapjs ----------< JS code ... >
Command
$ ncat bootstrap.js --banner --output dist/bundle.js
Result
---------- dist/bundlejs ----------/*! * Bootstrap v4.0.0 * https://getbootstrap.com * * Copyright 2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT license */ < JS code ... >
Add a custom banner and footer to a file
Files
---------- bootstrapjs ----------< JS code ... > ---------- build/bannerjs ----------const pkg = pkg;moduleexports =`/*! * v () * * Copyright (c) 2011- * Licensed under the license */ (function () {`; ---------- build/footerjs ----------moduleexports = `})()`
Command
$ ncat bootstrap.js --banner build/banner.js --footer build/footer.js --output dist/bundle.js
Result
---------- dist/bundlejs ----------/*! * Bootstrap v4.0.0 (https://getbootstrap.com) * * Copyright (c) 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under the MIT license */ {< JS code ... >}