Milkshake provide an easy way to define and implement a unified task logic among a set of different applications (or packages) in a mono-repository.
Website: https://milkshake.io Documentation: https://milkshake.io/docs
As in a real milkshake (my favorite mix: vanilla, strawberry, banana), you can mix different technical flavors (node.js app, react app, cordova app, aurelia app) in one repository and still have one delicious task workflow at the end!
Mono repos are more and more common among teams, and tools like lerna allow you to easly manage dependencies between packages. Also, npm scripts (based on gulp or other task system) allow you to easly execute tasks on those packages / apps.
- Some of those tasks can be identical and duplicated in different folders. In that case, those tasks can be anoying to keep in sync when modifications occur in one of them.
- Packages or apps of a mono repository can use different technologies and require different actions for a common objective. For example all the packages of a mono repos will probably need a build task, but how each package is built is dependent of the tech it uses.
- On mono repos, developer ownership of pacakges can differ from one package to another and so the tasks or script needed for it. global task name coherency is needed to be able to bulkly apply a task on all the repository.
- Tools like Lerna allow to run npm scripts on all its packages, but does not allow executing tasks on a subset of the packages. And what about the mono repos not managed by lerna?
Milkshake mainly aims to solve those problems and provide a default set of tasks that cover common actions in the mainly used web frameworks out of the box. But if you want some custom task naming or logic, you can also define your own set of tasks that are applicable to your repository and implement them to handle each technology your repository package or application use.
- Modular (milkshake-core, and milkshake-* for each type of supported app stack)
- In early development stage, milkshake-core not reached v1 yet
- Built on top of gulp
- Written in es6, transpiled with babel
- Widely used (yet hopefully).
- A replacement or alternative to lerna
- A potato
To help manage your milkshake tasks we provide a CLI, install it globally
$ npm install milkshake-cli -g
or
$ yarn global add milkshake-cli
Use the Milkshake CLI tool to manage your project tasks
-
Initialize milkshake in your project directory (that should already contain a package.json)
$ mk init
Follow the interactive milkshake configuration
-
Add application of packages to your project
$ mk add ApplicationName
Follow the interactive application configuration
-
List the tasks available for your project
$ mk help
-
List the applications / or package of your project
$ mk list
🎉**Congratulations! Your first Milkshake task based project is ready.
See CHANGELOG.md.
We welcome you to join to the development of Milkshake.
Milkshake is available under the MIT license.
Copyright (c) 2018 MilkshakeJS