just-build
How this tool works and why I wrote it
Quick Reference
install
npm install just-build --save-dev
Using --save-dev
because you typically configure npm run build
to call upon it, which works perfectly well will locally installed binaries.
package.json
"scripts": "build": "just-build" "watch": "just-build --watch" "just-build": "default": "just-build src test" // builds src and test (in parallell) "src": "cd src" "tsc [--watch 'Compilation complete.']" "rollup -c" // executed on each code change "eslint src" // executed after rollup (if rollup succeeds) "test": "cd test" "tsc [--watch 'Compilation complete.']" "rollup -c" "production": "NODE_ENV='production'" "just-build"
Build
node_modules/.bin/just-build
or:
npm run build
watch
node_modules/.bin/just-build --watch
or:
npm run watch
Build Specific Task
node_modules/.bin/just-build production
or:
npm run build production
Watch Specific Task
node_modules/.bin/just-build production --watch
or:
npm run watch production
Parallell Build
node_modules/.bin/just-build src test
or:
npm run build src test
Parallell Watch
node_modules/.bin/just-build src test --watch
or:
npm run watch src test
Limitations
This tool executes each configured command string using child_process.spawn() with shell:true
. You can't do all things you could do in bash. For example:
echo "hello world" > out.txtecho "hello world" | grep "hello"echo '$(node -p 1)'
Special Commands
(not launched by child_process.spawn())
just-build | Will shortcut to call recursively on other scripts without the cost of spawning another just-build process. The `[--watch]` argument is automatically appended and you do not need to add it. You get an error if you do. |
---|---|
<locally installed binary> | If you've installed a binary locally npm install typescript --save-dev , and you invoke tsc which is a binary bundled with typescript, an optimization kicks in so that the binary is launched using child_process.fork() instead of child_process.spawn(). |
node | If you execute a JS script using node scripts/myscript.jsthe script will be executed using child_process.fork() instead of child_process.spawn() to optimize resources. |
cd | Changes working directory for the next command. Note that working directory will always be the package root initially for each task. |
NAME=VALUE | Sets environment variable such as NODE_ENV=production |
# comments... | Every line is stripped from # comments. Can be used to document the purposes of your tasks. |