0.3.0 • Published 10 years ago

runfile v0.3.0

Weekly downloads
13
License
-
Repository
-
Last release
10 years ago

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.

0.3.0

10 years ago

0.2.32

10 years ago

0.2.31

10 years ago

0.2.30

10 years ago

0.2.20

10 years ago

0.2.12

10 years ago

0.2.11

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.41

10 years ago

0.0.4

10 years ago

0.0.32

10 years ago

0.0.31

10 years ago

0.0.3

10 years ago

0.0.24

10 years ago

0.0.23

10 years ago

0.0.22

10 years ago

0.0.21

10 years ago

0.0.2

10 years ago

0.0.14

10 years ago

0.0.13

10 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago