promake-env
TypeScript icon, indicating that this package has built-in type declarations

2.1.2 • Public • Published

promake-env

CircleCI Coverage Status semantic-release Commitizen friendly npm version

helps ensure promake rules will rerun when environment variables have changed

How it works

envRules you define write the values of the environment variables you specify to a target file you specify. However, it won't modify the file if the current values are equal to the ones in the file (from the last build), so by making the target file a prerequisite of another rule, you can ensure that rule will rerun whenever any of those environment variable values is different from the last build.

Usage

npm install --save promake-env

API

envRule(rule)(file, vars, [options])

First you create the function for defining environment rules by passing the rule function from Promake:

const Promake = require('promake')
const { rule } = new Promake()
const envRule = require('promake-env').envRule(rule)

Then you call the envRule function with (file, vars) to define a rule for creating and updating file.

Make sure to include file in the prerequisites of any other rules you want to rerun when the environment variables change.

file

The name of the file to write the environment variable values to.

vars

An array of environment variable names to check for changes and write to the file.

options.getEnv (optional, default: async () => process.env)

Allows you to customize which environment variables are used. Should be a function which returns a promise that will resolve to the environment variable hash you wish to use.

Example

Here's a make script for a babel project that makes sure it will recompile all the code when run with a different NODE_ENV or BABEL_ENV.

#!/usr/bin/env node

const Promake = require('promake')
const glob = require('glob').sync
const fs = require('fs-extra')

const buildEnv = 'lib/.buildEnv'
const srcFiles = glob('src/server/**/*.js')
const libFiles = srcFiles.map((file) => file.replace(/^src/, 'lib'))
const prerequisites = [
  ...srcFiles,
  buildEnv,
  '.babelrc',
  ...glob('src/**/.babelrc'),
]

const { rule, task, cli, exec } = new Promake()
const envRule = require('promake-env').envRule(rule)

envRule(buildEnv, ['NODE_ENV', 'BABEL_ENV'])
rule(libFiles, prerequisites, () => exec('babel src/ --out-dir lib'))

task('build', libFiles)

task('clean', () => fs.remove('build'))

cli()

Readme

Keywords

Package Sidebar

Install

npm i promake-env

Weekly Downloads

375

Version

2.1.2

License

MIT

Unpacked Size

23.6 kB

Total Files

9

Last publish

Collaborators

  • jedwards1211