twreporter-react
Version:
React-Redux site for The Reporter Foundation in Taiwan
101 lines (81 loc) • 2.1 kB
Markdown
[](https://npmjs.org/package/better-npm-run)
# Intro
Better NPM scripts runner
- Avoid hard-coded commands in package.json
- Cross-platform compatibility, originally needed by:
- https://github.com/formly-js/angular-formly/issues/305
- https://github.com/npm/npm/issues/2800
# Inspired by
- https://www.npmjs.com/package/with-package
# Alternatives
- [argv-set-env](https://github.com/kentcdodds/argv-set-env)
# 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",
"test": "better-npm-run test"
},
"betterScripts": {
"build:dist": {
"command": "webpack --config $npm_package_webpack --progress --colors",
"env": {
"NODE_ENV": "development"
}
},
"build:prod": {
"command": "webpack --config $npm_package_webpack --progress --colors",
"env": {
"NODE_ENV": "production"
}
},
"build": [
{
"run": "build:dist"
},
{
"run": "build:prod"
}
],
"test": {
"command": "karma start",
"env": {
"NODE_ENV": "test"
}
}
}
}
```
# .env File
If you have an `.env` file in your project root it will be loaded on every command
```
NODE_PATH=./:./lib
PORT=5000
```
# Shell scripts
Currently, using [bash variables](http://tldp.org/LDP/abs/html/internalvariables.html) (PWD, USER, etc.) is not possible:
``` JSON
"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`:
``` bash
forever start -l ${PWD}/logs/forever.log -o ${PWD}/logs/out.log -e ${PWD}/logs/errors.log -a index.js
```
`package.json`:
``` javascript
"command": "./forever.sh"
```