This project provides a system for defining and running client-side build processes automatically, using tools already installed by your favourite client-side dependency manager.
An example build.json
below shows three different usages:
npm
has been used to install babel into the node_modules directory. The command to run is thebabel
binary within the node_modules directory. The command will execute whenever a*.es6
file changes within the script directory.sass
has been installed to the system. Thesass
command is available on the environment PATH, and the developer has stated that at least version 3.5 is required for the build. The command will execute whenever a*.scss
file changes within the style directory.- A custom PHP script is called whenever any HTML or PHP file is edited in the page directory. This assumes that the command
vendor/bin/sitemap
is installed via a composer package.
build.json
:
{
"script/**/*.es6": {
"name": "Babel transpile",
"command": "./node_modules/.bin/babel",
"args": "script/main.js -o www/script.js",
"require": {
"node": "^8.4",
"@command": "^6.0"
}
},
"style/**/*.scss": {
"name": "Sass compilation",
"command": "sass",
"args": "style/main.scss www/style.css",
"require": {
"@command": ">=3.5"
}
},
"page/**/*.{html|php}": {
"name": "Sitemap generation",
"command": "php vendor/bin/sitemap",
"args": "src/page www/sitemap.xml"
}
}
This library assumes the configuration of the system is already configured.
The primary objective is to provide a client-side build system that is automatically configured for PHP projects, leaving the configuration of the system down to the developer's choice of client-side dependency management software.
- One-off builds
- Background builds (watching the matching files and re-building where necessary)
- Bring your own client-side dependency manager