synthesizer

0.23.0 • Public • Published

synthesizer

A lightweight, practical task runner. Great for build systems, testing, and deployments!

synthesizer has the speed of a Makefile and the power of Gulp.

Install

Install synthesizer globally:

# yarn global add synthesizer 

Add synthesizer to your project:

$ yarn add synthesizer

Getting Started

After synthesizer has been installed globally and in your project, add a synfile (syn.js) to your project:
syn.js

const { register } = require('synthesizer')
 
register('hello', () => {
    console.log('hello, world!')
})

Now you can run the hello task by typing: (note: try using autocomplete!)

$ syn hello
  {#syn} starting in ~/Documents/projects/use-syn
  {#syn} using ~/Documents/projects/use-syn/syn.js
  {:hello} init
  hello, world!
  {:hello} done
  {#syn} ok

You can also run multiple tasks in a single command. Not only is this good for batching work, it is a useful way to configure your tasks!

let env = 'prod'
 
register('dev', () => {
    env = 'dev'
})
 
register('start', () => {
    console.log('running in', env, 'mode')
})
$ syn start
  ...
  running in prod mode
  ...
$ syn dev start
  ...
  running in dev mode
  ...

API

register(name : string, ...tasks : function | string)

register will add a new task that is identified by name. When run, the registered task will sequentially run each of its component tasks. In addition to providing functions, other registered tasks can also be sourced. This is great for composing tasks and building workflows.

register('a', 'x', some_function, 'y', 'z')

Running syn a will execute 'x', some_function, 'y', and 'z' in order.

run(name : string, ?args : [string], ?options : {})

run is based off of child_process.spawnSync, providing some convenient defaults and error handling.

register('shello', () => {
    run('echo', ['hello, world!'])
})
$ syn shello
  ...
  hello, world!
  ...

shell(command : string, ?options : {})

shell is based off of child_process.execSync. Use this instead of run if you have a command string and want to spawn it in a subshell.

register('shello', () => {
    shell('echo \'hello, world!\'')
})
$ syn shello
  ...
  hello, world!
  ...

ask(?prompt : string, ?options : {}) : string

ask provides a simple readline interface for input. You can optionally provide a prompt, and options to readline-sync.prompt.

register('login', () => {
    const username = ask('user: ')
    const password = ask('pass: ', { hideEchoBack: true, mask: '' })
 
    run('echo', [`do something with ${ username }:${ password }`])
})
$ syn login
  ...
  user: your_manager
  pass: 
  do something with your_manager:Password1
  ...

Readme

Keywords

none

Package Sidebar

Install

npm i synthesizer

Weekly Downloads

0

Version

0.23.0

License

MIT

Last publish

Collaborators

  • synchronous