Create and apply your favorite npm stacks.
$ npm install mkstack -g
$ mkstack -c|--create :id
Lets setup a web stack. We need browserify and some other stuff.
$ mkdir ~/new-web-project && cd ~/new-web-project && npm init --yes
$ npm i browserify --save
$ npm i shoe --save --save-exact
$ npm i send --save --save-exact
$ npm i node-sass --save
$ npm i tape --save-dev
$ npm i nodemon --save-dev --save-exact
Save it.
$ mkstack -c web
Created web
$ mkstack -a|--apply :ids [-y|--yarn]
Time for a new web project. Create a new folder and apply the previously saved stack. This will do:
npm i :project --savefor alldependenciesnpm i :project --save-devfor alldevDependencies.
Use -y or --yarn if you want to use yarn instead of npm
$ mkdir ~/next-project && cd ~/next-project && npm init --yes
$ mkstack -a web
Applying web
..
If you create your stack abstractions well you can combine them. Perhaps you want a test stack that contains your favorite test modules, e.g. tape, chai, phantomjs etc.
Note that the order of the stacks are important since npm will save package.json each time and update in the order the stacks are applied.
$ mkstack -a web
$ mkstack -a sockets
$ mkstack -a tcp-server
$ mkstack -a irc2
$ mkstack -a console
Or use a comma separated list. This is more optimal since the dependency configuration will be merged before doing npm install to avoid installing modules multiple times to save time.
$ mkstack -a web,sockets,tcp-server,irc2,console
Applying web,sockets,tcp-server,irc2,console
..
$ mkstack -l|--list
List your saved stacks with the -l flag. Note that mkstack does not have any opinions on version numbers. It just saves them as you specified them the first time.
$ mkstack -l
{
"web": {
"dependencies": {
"browserify": "^8.1.1",
"node-sass": "^2.0.0-beta",
"send": "0.11.1",
"shoe": "0.0.15"
},
"devDependencies": {
"nodemon": "1.3.2",
"tape": "^3.4.0"
}
}
}
$ mkstack --rm :id
$ mkstack --rm web
Removed web
$ mkstack -l
No stacks found
mkstack uses rc. Default path for current config file is ~/.mkstackrc but that can be changed by using the --config flag:
$ mkstack -c websockets --config ~/path/to/my/stacks
GPL-3.0 © 2018-present Lars-Magnus Skog.