Skip to content
forked from pvdlg/ncat

Concatenate multiple files, with their sourcemaps and optionally stdin, a banner and a footer

License

Notifications You must be signed in to change notification settings

RideAmigosCorp/ncat

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ncat

Node CLI to concatenate multiple files, with their sourcemaps and optionally stdin, a banner and a footer.

Travis AppVeyor Codecov Greenkeeper badge license

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_1.min.js ----------
< First part of JS code (minified) ... >

---------- file_2.js ----------
<Second part of JS code ... >

Command

$ uglifyjs file_2.js | ncat file_1.min.js - --output dist/bundle.js

Result

---------- dist/bundle.js ----------
< First part of JS code (minified) ... >

< Second part of JS code (minified) ... >

Concatenate with sourcemaps

Files

---------- file_1.js ----------
< First part of JS code ... >

/*# sourceMappingURL=file_1.js.map */

---------- file_1.js.map ----------
{"version": 3,"file": "file_1.js", ... }

---------- file_2.js ----------
< Second part of JS code ... >

/*# sourceMappingURL=file_2.js.map */

---------- file_2.js.map ----------
{"version": 3,"file": "file_2.js", ... }

Command

$ ncat file_1.js file_2.js --map --output dist/bundle.js

Result

---------- dist/bundle.js ----------
< First part of JS code ... >

< Second part of JS code ... >

/*# sourceMappingURL=bundle.map */

---------- bundle.js.map ----------
{"version": 3,"file": "bundle.js", ... }

Add a banner to a file

Files

---------- bootstrap.js ----------
< JS code ... >

Command

$ ncat bootstrap.js --banner --output dist/bundle.js

Result

---------- dist/bundle.js ----------
/*!
 * 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

---------- bootstrap.js ----------
< JS code ... >

---------- build/banner.js ----------
const pkg = require('read-pkg-up').sync().pkg;
module.exports =
`/*!
 * ${pkg.name} v${pkg.version} (${pkg.homepage})
 *
 * Copyright (c) 2011-${new Date().getFullYear()} ${pkg.author.name}
 * Licensed under the ${pkg.license} license */

(function () {`;

---------- build/footer.js ----------
module.exports = `
})()`

Command

$ ncat bootstrap.js --banner build/banner.js --footer build/footer.js --output dist/bundle.js

Result

---------- dist/bundle.js ----------
/*!
 * 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 */

(function () {
< JS code ... >
})()

About

Concatenate multiple files, with their sourcemaps and optionally stdin, a banner and a footer

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%