Skip to content

Clean up your package.json with per-NODE_ENV npm scripts

License

Notifications You must be signed in to change notification settings

blakerutledge/per-env

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

blakerutledge fork

  • Include dependency on dotenv to use .env file. Walks up the filepath looking for it in case you have a nested type project setup.
  • Add ability to specify an arbitrary .env key beside NODE_ENV. In npm script, the first argument passed after calling per-env overrides the default key.
          ...,
          "build": "per-env",
          "build:dev": "build dev things",
          "build:prod": "build prod things",
          "start": "per-env SUB_APP",
          "start":my_app_1': "node app_1.js",
          "start":my_app_2': "node app_2.js"
          ...
        }
    
    in .env file you can have:
    NODE_ENV=dev
    SUB_APP=my_app_1
    

per-env

Clean up your package.json with per-NODE_ENV npm scripts.

travis build version downloads MIT License

Features

  • Defaults NODE_ENV to development.
  • Customize process.env per-environment.
  • Clearer, concise scripts.
  • No more Bash-scripting in package.json.
  • Simplify your workflow:
    1. npm install
    2. npm start

Example

{
  // Processes spawned by `per-env` inherit environment-specific
  // variables, if defined.
  "per-env": {
    "production": {
      "DOCKER_USER": "my",
      "DOCKER_REPO": "project"
    }
  },
  "scripts": {
    // If NODE_ENV is missing, defaults to "development".
    "build": "per-env",

    "build:development": "webpack -d --watch",
    "build:staging": "webpack -p",
    "build:production": "webpack -p",

    // Deployment won't work unless NODE_ENV=production is explicitly set.
    "deploy": "per-env",

    "predeploy:production": "docker build -t ${DOCKER_USER}/${DOCKER_PROJECT} .",
    "deploy:production": "docker push ${DOCKER_USER}/${DOCKER_PROJECT}",

    // "npm start" is _the_ command to start the server across all environments.
    "start": "per-env",

    "start:development": "npm run build:development",

    "prestart:production": "npm run build",
    "start:production": "start-cluster build/server/server.js",

    "prestart:staging": "npm run build",
    "start:staging": "start-cluster build/server/server.js",

    // Explicitly set NODE_ENV, which is helpful in CI.
    "test": "NODE_ENV=test per-env",

    "test:test": "mocha"
  }
}

Installation

npm: $ npm install @blakerutledge/per-env

yarn: $ yarn add @blakerutledge/per-env

License

MIT License 2016 © Eric Clemmons

About

Clean up your package.json with per-NODE_ENV npm scripts

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%