1.0.0-alpha.11 • Published 5 years ago

@mgutz/task v1.0.0-alpha.11

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

task

task is a no configuration async task runner from plain es6 files

  • .env support
  • babel out of the box
  • dependent tasks
  • respawn daemons gracefully
  • shell autocompletion
  • watch

Install

npm install -g @mgutz/task@next

Running Tasks

Edit Taskfile.js. Does not need to be inside a node project

export async function hello({argv}) {
  console.log(`Hello, ${argv.name}!`)
}

Run hello task from terminal with a name

task hello --name world

Each task receives context with packages already used by task

propdesc
_lodash
argvminimist
contribcontrib functions {shawn}
eventWatch event
globglobby
shshelljs

Export Meta for More Options

export function build() {}
export function clean() {}
export function generate() {}

export default {
  build: {desc: 'builds project', deps: [clean, generate]},
}

Alternatively,

export default {
  build: {desc: 'builds project', run: () => {}, deps: ['clean', 'generate']},
  clean: {desc: 'cleans project', run: () => {}},
  generate: {desc: 'generates code', run: () => {}},
}

Metadata props

propdesc
depsFunctions which must run before task
descDescription to display in task list
onceTask must only run once
runThe function to run. May be ignored if key is exported function name
watchGlob patterns to watch

Set a Default Task

export default build

Or create a pseudo-task named default

export default {
  default: {deps: [build]},
}

Watch Tasks

Watching requires defining glob patterns for a task

export default {
  build: {
    watch: ['src/**/*.js'],
  },
}

Run a task in watch mode with --watch, -w flag

task build -w

NOTE: task can gracefully restart a process (and subprocesses) if a task returns a ChildProcess. task provides contrib.shawn to run a literal script and return a ChildProcess

To properly restart a go http server listening on a port whenever a go file changes

export function server({contrib}) {
  return contrib.shawn(`
    cd cmd/server
    go install
    server
  `)
}

export default {
  server: {watch: ['server/**/*.go']},
}
task server -w

Running Multiple Tasks

task only runs a single task to be consistent with args. To run multiple tasks, call them directly within a task or add tasks to deps prop.

contrib.shawn

shawn is short for shell spawn. shawn executes /bin/bash -c [script] by default. The shell and arguments can be overriden

export function server({contrib}) {
  // shawn accepts any child_process.spawn option
  return contrib.shawn(`node index.js`, {
    shell: '/bin/bash',
    shellArgs: ['-c'],
    env: process.env,
  })
}

Auto Completion

Shell auto completion requires editing your shell's rc files. The easiest solution is by running

task --setup-completion

If you want more control, read omelette to manually integrate autocompletion.

LICENSE

MIT