MergerJS
Yet another lightweight and simple cross-platform build tool for JavaScript files, with CLI tooling, file imports, auto build capabilities and native OS notifications.
Because merger uses uglify-es for minification, you don't need to use any kind of transpilers in conjunction with this tool. You can use ES6+.
MergerJS does not support circular dependencies
NPM: LINK
GitHub: LINK
License: MIT
Dependencies:
├── uglify-es
├── neo-async
├── chokidar
├── commander
├── inquirer
├── node-notifier
├── chalk
Features
Getting Started
For the latest version of the README, always refer to the MergerJS GitHub repository's master branch:
https://github.com/joao-neves95/merger-js/blob/master/README.md
1) Node.js
You will need Node.js installed to run merger.
2) Install merger with NPM
Install globally -g
with NPM:
npm i merger-js -g
or
npm install merger-js -g
Use:
-
Make an header file (the source file; the first file to be merged) containing, on the top, comments importing the files in the order you want them to be built, from the first to the last.
Just like in a browser.
Example:
// $import 'sweetalert2/dist/sweetalert2.all.min.js'
// @import 'externalLibs'
// @import 'utilities'
// @import 'someModel'
// @import 'someView'
// @import 'someController'
// @import 'someOtherModel'
// @import 'someOtherView'
// @import 'someOtherController'
// @import 'someOtherFeature'
- Using
$
instead of @
, imports relative to the node_modules folder instead of relative to the header file. - Instead of
// @import 'fileName'
, you can just // @'fileName'
or $'file-name'
; - The extension names
.js
are optional; - The import of the header file (source file) is optional;
- You can import files from different directories relative to the same source file.
Example: // @import '../otherFolder/someFile'
- Run
merger init
on the root of your project:
This will set up the configuration model as well as some global configurations (minification, auto builds on file changes, native OS notifications).
You can alter them later through the CLI with the "merger set" command (learn more in "Commands").
-
Run merger add
to add a new source file (header file) to your merger configuration file (learn more in "Commands").
-
Run merger
or merger build
to start building (learn more in "Commands").
Example of a File Structure
|-- root/
|-- merger-config.json
|-- package.json
|-- .env
|-- node_modules/
|-- (...)
|-- server/
|-- (...)
|-- client/
|-- css
|-- (...)
|-- js
|-- mergerBuildFile.js
|-- src
|-- sourceFile.header.js (the header file containing all the imports; the first file to be build)
|-- utilities.js
|-- someOtherView.js
|-- someOtherModel.js
|-- someController.js
Commands
-
merger init
: Configure merger. It creates a merger-config.json file on your working directory.
-
merger log
: Print the configuration file contents.
-
merger add
: Add a new source file to the merger config file.
You should run this command on the directory where the source file you want to add is located.
MergerJS will give you the directory path, you input the source file name (the extension names are optional), or a relative path to that directory, and MergerJS will locate the configuration file and update it.
-
merger rm
: Remove a source file from the merger-config file.
You can run this command anywhere within your project (after the configuration file).
MergerJS will give you all your files within your configuration file and you remove one just by selecting it.
-
merger
or merger build
: Execute the build with the configuration you gave it on the merger-config.json file.
You can run it anywhere within your project's folder.
merger auto
, merger build -a
or merger build --auto
: Execute an automatic build session. You can do this, for example, when you have auto builds turned off and you don't want to change that.
-
merger set <configuration> <value>
: Edit a configuration key on the merger-config file.
You can run it anywhere within your project's folder.
At the moment you can pass:
- The <configuration>
mnfy
, minify
or uglify
and the <value> -t
/ --true
or -f
/ --false
to set minification to true or false (on/off); - The <configuration>
auto
or autobuild
and the <value> -t
/ --true
or -f
/ --false
to set auto builds to true or false (on/off); - The <configuration>
ntfs
, notifs
, notify
, or notifications
and the <value> -t
/ --true
or -f
/ --false
to set the native OS notifications to true or false (on/off);
Examples: merger set minify -f
, merger set autobuild --true
, merger set notifs -t
-
merger update
: Update MergerJS. Same as npm install merger-js -g
Versioning
Merger uses SemVer for versioning. You can read the changelog here.
Code Style
JavaScript Standard Style, with semicolons.
I only do not use semicolons on browser JS.
Motivation
When I started doing academic web projects, I felt the need for a build tool to merge all my JS files into one, cleaning the HTML pages and optimizing my workflow.
I wanted something simple and fast, so I built MergerJS to use in my small web-app projects.