Skip to content

hrimhari/better-npm-run

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NPM

Join the chat at https://gitter.im/benoror/better-npm-run

Build Status

PRs Welcome

Intro

Better NPM scripts runner

Inspired by

Alternatives

Usage in package.json

From this:

{
  "scripts": {
    "build:dist": "NODE_ENV=development webpack --config $npm_package_webpack --progress --colors",
    "test": "NODE_ENV=production karma start"
  }
}

To this:

{
  "devDependencies": {
    "better-npm-run": "~0.0.1"
  },
  "scripts": {
    "build:dist": "better-npm-run build:dist",
    "build:prod": "better-npm-run build:prod",
    "test": "better-npm-run test"
  },
  "betterScripts": {
    "build:dist": "webpack --config $npm_package_webpack --progress --colors",
    "build:prod": {
      "command": "webpack --config $npm_package_webpack --progress --colors",
      "env": {
        "NODE_ENV": "production"
      }
    },
    "test": {
      "command": "karma start",
      "env": {
        "NODE_ENV": "test"
      }
    }
  }
}

The betterScripts script definition can either be a string or sub-object with command and env attributes.

.env File

If you have an .env file in your project root it will be loaded on every command

NODE_PATH=./:./lib
NODE_ENV=development
PORT=5000

Environment variables will be merged in the following order:

  • package.json options
  • .env file content
  • parent process.env values

Whoever comes last, will set the actual value.

Shell scripts

Currently, using bash variables (PWD, USER, etc.) is not possible:

  "command": "forever start -l ${PWD}/logs/forever.log -o ${PWD}/logs/out.log -e ${PWD}/logs/errors.log -a index.js",

In order to use them, you can create an script file (.sh) instead:

forever.sh:

forever start -l ${PWD}/logs/forever.log -o ${PWD}/logs/out.log -e ${PWD}/logs/errors.log -a index.js

package.json:

  "command": "./forever.sh"

cli commands

This module expose 2 cli commands:

  • better-npm-run and,
  • a shorter one: bnr which is an alias to the former.

The shorter one is useful for cases where you have a script that calls several better-npm-run scripts. e.g:

using the normal cli name

"scripts": {
  "dev": "shell-exec 'better-npm-run install-hooks' 'better-npm-run watch-client' 'better-npm-run start-dev' 'better-npm-run start-dev-api' 'better-npm-run start-dev-worker' 'better-npm-run start-dev-socket'",
}

using the shorter alias

"scripts": {
  "dev": "shell-exec 'bnr install-hooks' 'bnr watch-client' 'bnr start-dev' 'bnr start-dev-api' 'bnr start-dev-worker' 'bnr start-dev-socket'",
}

About

Better NPM scripts runner

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • JavaScript 100.0%