runfile
A minimal alternative for GNU Makefile.
Last updated 4 years ago by kchan .
Original npm · Tarball · package.json
$ cnpm install runfile -g
SYNC missed versions from official npm registry.

runfile

NPM version NPM download

???? A minimal alternative for GNU Makefile. You can use Shell commands, External tools in your OS directly and synchronously with Runfile.

Additionally it's brought with built-in ES2015 support through Babel.

preview

Install

npm install -g runfile --production

Example

An example Runfile

task('clean', () => {
  rm('-rf', 'testFolder')
  rm('-rf', 'testSource')
})

// or run external tools
task('deploy', () => {
  var message = argv._[1] || 'update'
  exec('git add -A')
  exec(`git commit -m "${message}"`)
  exec('git push origin master')
})

task('default', ['clean', 'deploy'])

// alia `run path` to external command `echo $PATH`
// to print your $PATH info in console
// a short-hand for one-line task
alias('path', 'echo $PATH')
// or a sequence of commands
alias('async', [
  'echo Hi',
  'sleep 1',
  'echo After 1s'
])

then in your favorite terminal:

run clean
run deploy

Run tasks synchronously

task('timeout', (callback) => {
  setTimeout(() => {
    console.log('timeout')
    callback()
  }, 3000)
})

task('log', ['timeout'], () => {
  console.log(argv)
})

task('default', ['log'])

// then `run`

Run non-block synchronous task

Besides exec() and built-in shell commands, async/await also allows you to write async code in sync way (looks like).

import fs from 'fs'

function readFile (name) {
  return new Promise(function (resolve, reject) {
    fs.readFile(name, 'utf-8', function (err, data) {
      if (err) {
        reject(err)
      }
      resolve(data)
    })
  })
}

task('async', async () => {
  let data = await readFile('Runfile')
  console.log(data)
})

Trigger a task by hand

task('emit', () => {
  emit('deploy')
})

Running Node executable inside ./node_modules/.bin

// just a short-hand for `./node_modules/.bin/webpack`
task('webpack', () => {
  const webpack = npm('webpack --hot --inline')
  if (process.platform === 'win32') {
    exec(`set NODE_ENV=development && ${webpack}`)
  } else {
    exec('NODE_ENV=development ${webpack}')
  }
})

Run task from global Runfile

Sometimes you repeat some common operations so you will always need a Runfile stored globally to access from anywhere.

// find task `git` in `~\.runfile\Runfile`
run git -g
// alias
run :git

License

MIT.

Current Tags

  • 0.3.0                                ...           latest (4 years ago)

27 Versions

  • 0.3.0                                ...           4 years ago
  • 0.2.32                                ...           4 years ago
  • 0.2.31                                ...           4 years ago
  • 0.2.30                                ...           4 years ago
  • 0.2.20                                ...           4 years ago
  • 0.2.12                                ...           4 years ago
  • 0.2.11                                ...           4 years ago
  • 0.2.1                                ...           4 years ago
  • 0.2.0                                ...           4 years ago
  • 0.1.1                                ...           4 years ago
  • 0.1.0                                ...           4 years ago
  • 0.0.41                                ...           4 years ago
  • 0.0.4                                ...           4 years ago
  • 0.0.32                                ...           4 years ago
  • 0.0.31                                ...           4 years ago
  • 0.0.3                                ...           4 years ago
  • 0.0.24                                ...           4 years ago
  • 0.0.23                                ...           4 years ago
  • 0.0.22                                ...           4 years ago
  • 0.0.21                                ...           4 years ago
  • 0.0.2                                ...           4 years ago
  • 0.0.14                                ...           4 years ago
  • 0.0.13                                ...           4 years ago
  • 0.0.12                                ...           4 years ago
  • 0.0.11                                ...           4 years ago
  • 0.0.1                                ...           4 years ago
  • 0.0.0                                ...           4 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 4
Dependencies (12)
Dev Dependencies (0)
None
Dependents (1)

Copyright 2014 - 2016 © taobao.org |