Comparing version 6.0.0 to 6.0.1
# CHANGELOG | ||
The changelog is automatically updated using [semantic-release](https://github.com/semantic-release/semantic-release). | ||
You can see it on the [releases page](../../releases). | ||
The changelog is automatically updated using | ||
[semantic-release](https://github.com/semantic-release/semantic-release). You | ||
can see it on the [releases page](../../releases). |
#!/usr/bin/env node | ||
'use strict'; | ||
"use strict"; | ||
var crossEnv = require('..'); | ||
const crossEnv = require('..'); | ||
crossEnv(process.argv.slice(2), { shell: true }); | ||
crossEnv(process.argv.slice(2), { | ||
shell: true | ||
}); |
#!/usr/bin/env node | ||
'use strict'; | ||
"use strict"; | ||
var crossEnv = require('..'); | ||
const crossEnv = require('..'); | ||
crossEnv(process.argv.slice(2)); |
@@ -1,19 +0,15 @@ | ||
'use strict'; | ||
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _path = require('path'); | ||
var _path = _interopRequireDefault(require("path")); | ||
var _path2 = _interopRequireDefault(_path); | ||
var _isWindows = _interopRequireDefault(require("./is-windows")); | ||
var _isWindows = require('./is-windows'); | ||
var _isWindows2 = _interopRequireDefault(_isWindows); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = commandConvert; | ||
var _default = commandConvert; | ||
/** | ||
@@ -28,22 +24,24 @@ * Converts an environment variable usage to be appropriate for the current OS | ||
function commandConvert(command, env) { | ||
var normalize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; | ||
exports.default = _default; | ||
if (!(0, _isWindows2.default)()) { | ||
function commandConvert(command, env, normalize = false) { | ||
if (!(0, _isWindows.default)()) { | ||
return command; | ||
} | ||
var envUnixRegex = /\$(\w+)|\${(\w+)}/g; // $my_var or ${my_var} | ||
var convertedCmd = command.replace(envUnixRegex, function (match, $1, $2) { | ||
var varName = $1 || $2; | ||
// In Windows, non-existent variables are not replaced by the shell, | ||
const envUnixRegex = /\$(\w+)|\${(\w+)}/g; // $my_var or ${my_var} | ||
const convertedCmd = command.replace(envUnixRegex, (match, $1, $2) => { | ||
const varName = $1 || $2; // In Windows, non-existent variables are not replaced by the shell, | ||
// so for example "echo %FOO%" will literally print the string "%FOO%", as | ||
// opposed to printing an empty string in UNIX. See kentcdodds/cross-env#145 | ||
// If the env variable isn't defined at runtime, just strip it from the command entirely | ||
return env[varName] ? `%${varName}%` : ''; | ||
}); | ||
// Normalization is required for commands with relative paths | ||
}); // Normalization is required for commands with relative paths | ||
// For example, `./cmd.bat`. See kentcdodds/cross-env#127 | ||
// However, it should not be done for command arguments. | ||
// See https://github.com/kentcdodds/cross-env/pull/130#issuecomment-319887970 | ||
return normalize === true ? _path2.default.normalize(convertedCmd) : convertedCmd; | ||
return normalize === true ? _path.default.normalize(convertedCmd) : convertedCmd; | ||
} |
@@ -1,39 +0,24 @@ | ||
'use strict'; | ||
"use strict"; | ||
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _crossSpawn = require('cross-spawn'); | ||
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); | ||
var _command = require('./command'); | ||
var _crossSpawn = require("cross-spawn"); | ||
var _command2 = _interopRequireDefault(_command); | ||
var _command = _interopRequireDefault(require("./command")); | ||
var _variable = require('./variable'); | ||
var _variable = _interopRequireDefault(require("./variable")); | ||
var _variable2 = _interopRequireDefault(_variable); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
module.exports = crossEnv; | ||
const envSetterRegex = /(\w+)=('(.*)'|"(.*)"|(.*))/; | ||
var envSetterRegex = /(\w+)=('(.*)'|"(.*)"|(.*))/; | ||
function crossEnv(args, options = {}) { | ||
const [envSetters, command, commandArgs] = parseCommand(args); | ||
const env = getEnvVars(envSetters); | ||
function crossEnv(args) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var _parseCommand = parseCommand(args), | ||
_parseCommand2 = _slicedToArray(_parseCommand, 3), | ||
envSetters = _parseCommand2[0], | ||
command = _parseCommand2[1], | ||
commandArgs = _parseCommand2[2]; | ||
var env = getEnvVars(envSetters); | ||
if (command) { | ||
var proc = (0, _crossSpawn.spawn)( | ||
// run `path.normalize` for command(on windows) | ||
(0, _command2.default)(command, env, true), | ||
// by default normalize is `false`, so not run for cmd args | ||
commandArgs.map(function (arg) { | ||
return (0, _command2.default)(arg, env); | ||
}), { | ||
const proc = (0, _crossSpawn.spawn)( // run `path.normalize` for command(on windows) | ||
(0, _command.default)(command, env, true), // by default normalize is `false`, so not run for cmd args | ||
commandArgs.map(arg => (0, _command.default)(arg, env)), { | ||
stdio: 'inherit', | ||
@@ -43,21 +28,14 @@ shell: options.shell, | ||
}); | ||
process.on('SIGTERM', function () { | ||
return proc.kill('SIGTERM'); | ||
}); | ||
process.on('SIGINT', function () { | ||
return proc.kill('SIGINT'); | ||
}); | ||
process.on('SIGBREAK', function () { | ||
return proc.kill('SIGBREAK'); | ||
}); | ||
process.on('SIGHUP', function () { | ||
return proc.kill('SIGHUP'); | ||
}); | ||
proc.on('exit', function (code, signal) { | ||
var crossEnvExitCode = code; | ||
// exit code could be null when OS kills the process(out of memory, etc) or due to node handling it | ||
process.on('SIGTERM', () => proc.kill('SIGTERM')); | ||
process.on('SIGINT', () => proc.kill('SIGINT')); | ||
process.on('SIGBREAK', () => proc.kill('SIGBREAK')); | ||
process.on('SIGHUP', () => proc.kill('SIGHUP')); | ||
proc.on('exit', (code, signal) => { | ||
let crossEnvExitCode = code; // exit code could be null when OS kills the process(out of memory, etc) or due to node handling it | ||
// but if the signal is SIGINT the user exited the process so we want exit code 0 | ||
if (crossEnvExitCode === null) { | ||
crossEnvExitCode = signal === 'SIGINT' ? 0 : 1; | ||
} | ||
process.exit(crossEnvExitCode); //eslint-disable-line no-process-exit | ||
@@ -67,2 +45,3 @@ }); | ||
} | ||
return null; | ||
@@ -72,9 +51,11 @@ } | ||
function parseCommand(args) { | ||
var envSetters = {}; | ||
var command = null; | ||
var commandArgs = []; | ||
for (var i = 0; i < args.length; i++) { | ||
var match = envSetterRegex.exec(args[i]); | ||
const envSetters = {}; | ||
let command = null; | ||
let commandArgs = []; | ||
for (let i = 0; i < args.length; i++) { | ||
const match = envSetterRegex.exec(args[i]); | ||
if (match) { | ||
var value = void 0; | ||
let value; | ||
@@ -92,11 +73,10 @@ if (typeof match[3] !== 'undefined') { | ||
// No more env setters, the rest of the line must be the command and args | ||
var cStart = []; | ||
cStart = args.slice(i) | ||
// Regex: | ||
let cStart = []; | ||
cStart = args.slice(i) // Regex: | ||
// match "\'" or "'" | ||
// or match "\" if followed by [$"\] (lookahead) | ||
.map(function (a) { | ||
var re = /\\\\|(\\)?'|([\\])(?=[$"\\])/g; | ||
// Eliminate all matches except for "\'" => "'" | ||
return a.replace(re, function (m) { | ||
.map(a => { | ||
const re = /\\\\|(\\)?'|([\\])(?=[$"\\])/g; // Eliminate all matches except for "\'" => "'" | ||
return a.replace(re, m => { | ||
if (m === '\\\\') return '\\'; | ||
@@ -117,10 +97,12 @@ if (m === "\\'") return "'"; | ||
function getEnvVars(envSetters) { | ||
var envVars = Object.assign({}, process.env); | ||
const envVars = (0, _extends2.default)({}, process.env); | ||
if (process.env.APPDATA) { | ||
envVars.APPDATA = process.env.APPDATA; | ||
} | ||
Object.keys(envSetters).forEach(function (varName) { | ||
envVars[varName] = (0, _variable2.default)(envSetters[varName], varName); | ||
Object.keys(envSetters).forEach(varName => { | ||
envVars[varName] = (0, _variable.default)(envSetters[varName], varName); | ||
}); | ||
return envVars; | ||
} |
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -6,5 +6,6 @@ Object.defineProperty(exports, "__esModule", { | ||
}); | ||
exports.default = void 0; | ||
exports.default = function () { | ||
return process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE); | ||
}; | ||
var _default = () => process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE); | ||
exports.default = _default; |
@@ -1,3 +0,5 @@ | ||
'use strict'; | ||
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
@@ -8,10 +10,5 @@ value: true | ||
var _isWindows = require('./is-windows'); | ||
var _isWindows = _interopRequireDefault(require("./is-windows")); | ||
var _isWindows2 = _interopRequireDefault(_isWindows); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var pathLikeEnvVarWhitelist = new Set(['PATH', 'NODE_PATH']); | ||
const pathLikeEnvVarWhitelist = new Set(['PATH', 'NODE_PATH']); | ||
/** | ||
@@ -25,6 +22,6 @@ * This will transform UNIX-style list values to Windows-style. | ||
*/ | ||
function replaceListDelimiters(varValue) { | ||
var varName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; | ||
var targetSeparator = (0, _isWindows2.default)() ? ';' : ':'; | ||
function replaceListDelimiters(varValue, varName = '') { | ||
const targetSeparator = (0, _isWindows.default)() ? ';' : ':'; | ||
if (!pathLikeEnvVarWhitelist.has(varName)) { | ||
@@ -34,3 +31,3 @@ return varValue; | ||
return varValue.replace(/(\\*):/g, function (match, backslashes) { | ||
return varValue.replace(/(\\*):/g, (match, backslashes) => { | ||
if (backslashes.length % 2) { | ||
@@ -41,6 +38,6 @@ // Odd number of backslashes preceding it means it's escaped, | ||
} | ||
return backslashes + targetSeparator; | ||
}); | ||
} | ||
/** | ||
@@ -59,5 +56,8 @@ * This will attempt to resolve the value of any env variables that are inside | ||
*/ | ||
function resolveEnvVars(varValue) { | ||
var envUnixRegex = /(\\*)(\$(\w+)|\${(\w+)})/g; // $my_var or ${my_var} or \$my_var | ||
return varValue.replace(envUnixRegex, function (_, escapeChars, varNameWithDollarSign, varName, altVarName) { | ||
const envUnixRegex = /(\\*)(\$(\w+)|\${(\w+)})/g; // $my_var or ${my_var} or \$my_var | ||
return varValue.replace(envUnixRegex, (_, escapeChars, varNameWithDollarSign, varName, altVarName) => { | ||
// do not replace things preceded by a odd number of \ | ||
@@ -67,6 +67,6 @@ if (escapeChars.length % 2 === 1) { | ||
} | ||
return escapeChars.substr(0, escapeChars.length / 2) + (process.env[varName || altVarName] || ''); | ||
}); | ||
} | ||
/** | ||
@@ -78,4 +78,6 @@ * Converts an environment variable value to be appropriate for the current OS. | ||
*/ | ||
function varValueConvert(originalValue, originalName) { | ||
return resolveEnvVars(replaceListDelimiters(originalValue, originalName)); | ||
} |
{ | ||
"name": "cross-env", | ||
"version": "6.0.0", | ||
"version": "6.0.1", | ||
"description": "Run scripts that set and use environment variables across platforms", | ||
@@ -14,10 +14,12 @@ "main": "dist/index.js", | ||
"scripts": { | ||
"add-contributor": "kcd-scripts contributors add", | ||
"build": "kcd-scripts build", | ||
"lint": "kcd-scripts lint", | ||
"test": "kcd-scripts test", | ||
"test:update": "npm test -- --updateSnapshot --coverage", | ||
"validate": "kcd-scripts validate", | ||
"precommit": "kcd-scripts precommit" | ||
"validate": "kcd-scripts validate" | ||
}, | ||
"husky": { | ||
"hooks": { | ||
"pre-commit": "kcd-scripts pre-commit" | ||
} | ||
}, | ||
"files": [ | ||
@@ -34,6 +36,7 @@ "dist" | ||
"dependencies": { | ||
"@babel/runtime": "^7.6.2", | ||
"cross-spawn": "^7.0.0" | ||
}, | ||
"devDependencies": { | ||
"kcd-scripts": "^0.3.4" | ||
"kcd-scripts": "^1.8.0" | ||
}, | ||
@@ -40,0 +43,0 @@ "eslintConfig": { |
171
README.md
@@ -0,1 +1,24 @@ | ||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
- [cross-env ๐](#cross-env-) | ||
- [The problem](#the-problem) | ||
- [This solution](#this-solution) | ||
- [Installation](#installation) | ||
- [Usage](#usage) | ||
- [`cross-env` vs `cross-env-shell`](#cross-env-vs-cross-env-shell) | ||
- [Windows Issues](#windows-issues) | ||
- [Inspiration](#inspiration) | ||
- [Other Solutions](#other-solutions) | ||
- [Contributors](#contributors) | ||
- [LICENSE](#license) | ||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
<p align="center"> | ||
<a href="https://codefund.io/properties/445/visit-sponsor"> | ||
<img src="https://codefund.io/properties/445/sponsor" /> | ||
</a> | ||
</p> | ||
<div align="center"> | ||
@@ -13,19 +36,8 @@ <h1>cross-env ๐</h1> | ||
[![Code Coverage][coverage-badge]][coverage] | ||
[![Dependencies][dependencyci-badge]][dependencyci] | ||
[![version][version-badge]][package] | ||
[![node-version][node-version-badge]][node] | ||
[![downloads][downloads-badge]][npm-stat] | ||
[![version][version-badge]][package] [![MIT License][license-badge]][license] | ||
[![MIT License][license-badge]][LICENSE] | ||
[![All Contributors](https://img.shields.io/badge/all_contributors-19-orange.svg?style=flat-square)](#contributors) | ||
[![PRs Welcome][prs-badge]][prs] | ||
[![Donate][donate-badge]][donate] | ||
[![Code of Conduct][coc-badge]][coc] | ||
[![Roadmap][roadmap-badge]][roadmap] | ||
[![Examples][examples-badge]][examples] | ||
[![All Contributors](https://img.shields.io/badge/all_contributors-20-orange.svg?style=flat-square)](#contributors) | ||
[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc] | ||
[![downloads][downloads-badge]][npmtrends] | ||
[![Watch on GitHub][github-watch-badge]][github-watch] | ||
[![Star on GitHub][github-star-badge]][github-star] | ||
[![Tweet][twitter-badge]][twitter] | ||
## The problem | ||
@@ -58,4 +70,4 @@ | ||
> NOTE : Version 6 of cross-env only supports Node.js 8 and higher, to use it on Node.js 7 or lower install version 5 | ||
> ```npm install --save-dev cross-env@5 ``` | ||
> NOTE : Version 6 of cross-env only supports Node.js 8 and higher, to use it on | ||
> Node.js 7 or lower install version 5 `npm install --save-dev cross-env@5` | ||
@@ -99,8 +111,12 @@ ## Usage | ||
env variables or when the environment variables are too long to have everything | ||
in one line. It also means that you can use `$GREET` env var syntax even on | ||
in one line. It also means that you can use `$GREET` env var syntax even on | ||
Windows which would usually require it to be `%GREET%`. | ||
If you precede a dollar sign with an odd number of backslashes the expression statement will not be replaced. Note that this means backslashes after the JSON string escaping took place. `"FOO=\\$BAR"` will not be replaced. `"FOO=\\\\$BAR"` will be replaced though. | ||
If you precede a dollar sign with an odd number of backslashes the expression | ||
statement will not be replaced. Note that this means backslashes after the JSON | ||
string escaping took place. `"FOO=\\$BAR"` will not be replaced. | ||
`"FOO=\\\\$BAR"` will be replaced though. | ||
Lastly, if you want to pass a JSON string (e.g., when using [ts-loader]), you can do as follows: | ||
Lastly, if you want to pass a JSON string (e.g., when using [ts-loader]), you | ||
can do as follows: | ||
@@ -115,4 +131,5 @@ ```json | ||
Pay special attention to the **triple backslash** `(\\\)` **before** the **double quotes** `(")` and the **absence** of **single quotes** `(')`. | ||
Both of these conditions have to be met in order to work both on Windows and UNIX. | ||
Pay special attention to the **triple backslash** `(\\\)` **before** the | ||
**double quotes** `(")` and the **absence** of **single quotes** `(')`. Both of | ||
these conditions have to be met in order to work both on Windows and UNIX. | ||
@@ -122,11 +139,10 @@ ## `cross-env` vs `cross-env-shell` | ||
The `cross-env` module exposes two bins: `cross-env` and `cross-env-shell`. The | ||
first one executes commands using [`cross-spawn`][cross-spawn], while the | ||
second one uses the `shell` option from Node's `spawn`. | ||
first one executes commands using [`cross-spawn`][cross-spawn], while the second | ||
one uses the `shell` option from Node's `spawn`. | ||
The main use case for `cross-env-shell` is when you need an environment | ||
variable to be set across an entire inline shell script, rather than just one | ||
command. | ||
The main use case for `cross-env-shell` is when you need an environment variable | ||
to be set across an entire inline shell script, rather than just one command. | ||
For example, if you want to have the environment variable apply to several | ||
commands in series then you will need to wrap those in quotes and use | ||
commands in series then you will need to wrap those in quotes and use | ||
`cross-env-shell` instead of `cross-env`. | ||
@@ -142,7 +158,10 @@ | ||
The rule of thumb is: if you want to pass to `cross-env` a command that | ||
contains special shell characters *that you want interpreted*, then use | ||
The rule of thumb is: if you want to pass to `cross-env` a command that contains | ||
special shell characters _that you want interpreted_, then use | ||
`cross-env-shell`. Otherwise stick to `cross-env`. | ||
On Windows you need to use `cross-env-shell`, if you want to handle [signal events](https://nodejs.org/api/process.html#process_signal_events) inside of your program. A common case for that is when you want to capture a `SIGINT` event invoked by pressing `Ctrl + C` on the command-line interface. | ||
On Windows you need to use `cross-env-shell`, if you want to handle | ||
[signal events](https://nodejs.org/api/process.html#process_signal_events) | ||
inside of your program. A common case for that is when you want to capture a | ||
`SIGINT` event invoked by pressing `Ctrl + C` on the command-line interface. | ||
@@ -152,3 +171,3 @@ ## Windows Issues | ||
Please note that `npm` uses `cmd` by default and that doesn't support command | ||
substitution, so if you want to leaverage that, then you need to update your | ||
substitution, so if you want to leverage that, then you need to update your | ||
`.npmrc` to set the `script-shell` to powershell. | ||
@@ -160,9 +179,11 @@ [Learn more here](https://github.com/kentcdodds/cross-env/issues/192#issuecomment-513341729). | ||
I originally created this to solve a problem I was having with my npm scripts in | ||
[angular-formly][angular-formly]. This made contributing to the project | ||
much easier for Windows users. | ||
[angular-formly][angular-formly]. This made contributing to the project much | ||
easier for Windows users. | ||
## Other Solutions | ||
- [`env-cmd`](https://github.com/toddbluhm/env-cmd) - Reads environment variables from a file instead | ||
- [`@naholyr/cross-env`](https://www.npmjs.com/package/@naholyr/cross-env) - `cross-env` with support for setting default values | ||
- [`env-cmd`](https://github.com/toddbluhm/env-cmd) - Reads environment | ||
variables from a file instead | ||
- [`@naholyr/cross-env`](https://www.npmjs.com/package/@naholyr/cross-env) - | ||
`cross-env` with support for setting default values | ||
@@ -175,13 +196,39 @@ ## Contributors | ||
<!-- prettier-ignore --> | ||
| [<img src="https://avatars.githubusercontent.com/u/1500684?v=3" width="100px;"/><br /><sub><b>Kent C. Dodds</b></sub>](https://kentcdodds.com)<br />[๐ป](https://github.com/kentcdodds/cross-env/commits?author=kentcdodds "Code") [๐](https://github.com/kentcdodds/cross-env/commits?author=kentcdodds "Documentation") [๐](#infra-kentcdodds "Infrastructure (Hosting, Build-Tools, etc)") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=kentcdodds "Tests") | [<img src="https://avatars1.githubusercontent.com/u/499038?v=3" width="100px;"/><br /><sub><b>Ya Zhuang </b></sub>](https://zhuangya.me)<br />[๐](#plugin-zhuangya "Plugin/utility libraries") [๐](https://github.com/kentcdodds/cross-env/commits?author=zhuangya "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/3440094?v=3" width="100px;"/><br /><sub><b>James Harris</b></sub>](https://wopian.me)<br />[๐](https://github.com/kentcdodds/cross-env/commits?author=wopian "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/8941730?v=3" width="100px;"/><br /><sub><b>compumike08</b></sub>](https://github.com/compumike08)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Acompumike08 "Bug reports") [๐](https://github.com/kentcdodds/cross-env/commits?author=compumike08 "Documentation") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=compumike08 "Tests") | [<img src="https://avatars1.githubusercontent.com/u/2270425?v=3" width="100px;"/><br /><sub><b>Daniel Rodrรญguez Rivero</b></sub>](https://github.com/danielo515)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Adanielo515 "Bug reports") [๐ป](https://github.com/kentcdodds/cross-env/commits?author=danielo515 "Code") [๐](https://github.com/kentcdodds/cross-env/commits?author=danielo515 "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/1508477?v=3" width="100px;"/><br /><sub><b>Jonas Keinholz</b></sub>](https://github.com/inyono)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Ainyono "Bug reports") [๐ป](https://github.com/kentcdodds/cross-env/commits?author=inyono "Code") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=inyono "Tests") | [<img src="https://avatars3.githubusercontent.com/u/1656170?v=3" width="100px;"/><br /><sub><b>Hugo Wood</b></sub>](https://github.com/hgwood)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Ahgwood "Bug reports") [๐ป](https://github.com/kentcdodds/cross-env/commits?author=hgwood "Code") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=hgwood "Tests") | | ||
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | | ||
| [<img src="https://avatars0.githubusercontent.com/u/3715715?v=3" width="100px;"/><br /><sub><b>Thiebaud Thomas</b></sub>](https://github.com/thomasthiebaud)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Athomasthiebaud "Bug reports") [๐ป](https://github.com/kentcdodds/cross-env/commits?author=thomasthiebaud "Code") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=thomasthiebaud "Tests") | [<img src="https://avatars1.githubusercontent.com/u/1715800?v=3" width="100px;"/><br /><sub><b>Daniel Rey Lรณpez</b></sub>](https://daniel.blog)<br />[๐ป](https://github.com/kentcdodds/cross-env/commits?author=DanReyLop "Code") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=DanReyLop "Tests") | [<img src="https://avatars2.githubusercontent.com/u/6374832?v=3" width="100px;"/><br /><sub><b>Amila Welihinda</b></sub>](http://amilajack.com)<br />[๐](#infra-amilajack "Infrastructure (Hosting, Build-Tools, etc)") | [<img src="https://avatars1.githubusercontent.com/u/1396?v=3" width="100px;"/><br /><sub><b>Paul Betts</b></sub>](https://twitter.com/paulcbetts)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Apaulcbetts "Bug reports") [๐ป](https://github.com/kentcdodds/cross-env/commits?author=paulcbetts "Code") | [<img src="https://avatars1.githubusercontent.com/u/6371670?v=3" width="100px;"/><br /><sub><b>Turner Hayes</b></sub>](https://github.com/turnerhayes)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Aturnerhayes "Bug reports") [๐ป](https://github.com/kentcdodds/cross-env/commits?author=turnerhayes "Code") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=turnerhayes "Tests") | [<img src="https://avatars2.githubusercontent.com/u/22251956?v=4" width="100px;"/><br /><sub><b>Suhas Karanth</b></sub>](https://github.com/sudo-suhas)<br />[๐ป](https://github.com/kentcdodds/cross-env/commits?author=sudo-suhas "Code") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=sudo-suhas "Tests") | [<img src="https://avatars3.githubusercontent.com/u/512692?v=4" width="100px;"/><br /><sub><b>Sven</b></sub>](https://github.com/sventschui)<br />[๐ป](https://github.com/kentcdodds/cross-env/commits?author=sventschui "Code") [๐](https://github.com/kentcdodds/cross-env/commits?author=sventschui "Documentation") [๐ก](#example-sventschui "Examples") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=sventschui "Tests") | | ||
| [<img src="https://avatars0.githubusercontent.com/u/5522668?v=4" width="100px;"/><br /><sub><b>D. Nicolรกs Lopez Zelaya</b></sub>](https://github.com/NicoZelaya)<br />[๐ป](https://github.com/kentcdodds/cross-env/commits?author=NicoZelaya "Code") | [<img src="https://avatars3.githubusercontent.com/u/219289?v=4" width="100px;"/><br /><sub><b>Johan Hernandez</b></sub>](http://bithavoc.io)<br />[๐ป](https://github.com/kentcdodds/cross-env/commits?author=bithavoc "Code") | [<img src="https://avatars3.githubusercontent.com/u/13559161?v=4" width="100px;"/><br /><sub><b>Jordan Nielson</b></sub>](https://github.com/jnielson94)<br />[๐](https://github.com/kentcdodds/cross-env/issues?q=author%3Ajnielson94 "Bug reports") [๐ป](https://github.com/kentcdodds/cross-env/commits?author=jnielson94 "Code") [โ ๏ธ](https://github.com/kentcdodds/cross-env/commits?author=jnielson94 "Tests") | [<img src="https://avatars0.githubusercontent.com/u/5185660?v=4" width="100px;"/><br /><sub><b>Jason Cooke</b></sub>](https://nz.linkedin.com/in/jsonc11)<br />[๐](https://github.com/kentcdodds/cross-env/commits?author=Jason-Cooke "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/17709887?v=4" width="100px;"/><br /><sub><b>bibo5088</b></sub>](https://github.com/bibo5088)<br />[๐ป](https://github.com/kentcdodds/cross-env/commits?author=bibo5088 "Code") | | ||
<table> | ||
<tr> | ||
<td align="center"><a href="https://kentcdodds.com"><img src="https://avatars.githubusercontent.com/u/1500684?v=3" width="100px;" alt="Kent C. Dodds"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=kentcdodds" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=kentcdodds" title="Documentation">๐</a> <a href="#infra-kentcdodds" title="Infrastructure (Hosting, Build-Tools, etc)">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=kentcdodds" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="https://zhuangya.me"><img src="https://avatars1.githubusercontent.com/u/499038?v=3" width="100px;" alt="Ya Zhuang "/><br /><sub><b>Ya Zhuang </b></sub></a><br /><a href="#plugin-zhuangya" title="Plugin/utility libraries">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=zhuangya" title="Documentation">๐</a></td> | ||
<td align="center"><a href="https://wopian.me"><img src="https://avatars3.githubusercontent.com/u/3440094?v=3" width="100px;" alt="James Harris"/><br /><sub><b>James Harris</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=wopian" title="Documentation">๐</a></td> | ||
<td align="center"><a href="https://github.com/compumike08"><img src="https://avatars1.githubusercontent.com/u/8941730?v=3" width="100px;" alt="compumike08"/><br /><sub><b>compumike08</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Acompumike08" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=compumike08" title="Documentation">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=compumike08" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="https://github.com/danielo515"><img src="https://avatars1.githubusercontent.com/u/2270425?v=3" width="100px;" alt="Daniel Rodrรญguez Rivero"/><br /><sub><b>Daniel Rodrรญguez Rivero</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Adanielo515" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=danielo515" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=danielo515" title="Documentation">๐</a></td> | ||
<td align="center"><a href="https://github.com/inyono"><img src="https://avatars2.githubusercontent.com/u/1508477?v=3" width="100px;" alt="Jonas Keinholz"/><br /><sub><b>Jonas Keinholz</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Ainyono" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=inyono" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=inyono" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="https://github.com/hgwood"><img src="https://avatars3.githubusercontent.com/u/1656170?v=3" width="100px;" alt="Hugo Wood"/><br /><sub><b>Hugo Wood</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Ahgwood" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=hgwood" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=hgwood" title="Tests">โ ๏ธ</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/thomasthiebaud"><img src="https://avatars0.githubusercontent.com/u/3715715?v=3" width="100px;" alt="Thiebaud Thomas"/><br /><sub><b>Thiebaud Thomas</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Athomasthiebaud" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=thomasthiebaud" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=thomasthiebaud" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="https://daniel.blog"><img src="https://avatars1.githubusercontent.com/u/1715800?v=3" width="100px;" alt="Daniel Rey Lรณpez"/><br /><sub><b>Daniel Rey Lรณpez</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=DanReyLop" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=DanReyLop" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="http://amilajack.com"><img src="https://avatars2.githubusercontent.com/u/6374832?v=3" width="100px;" alt="Amila Welihinda"/><br /><sub><b>Amila Welihinda</b></sub></a><br /><a href="#infra-amilajack" title="Infrastructure (Hosting, Build-Tools, etc)">๐</a></td> | ||
<td align="center"><a href="https://twitter.com/paulcbetts"><img src="https://avatars1.githubusercontent.com/u/1396?v=3" width="100px;" alt="Paul Betts"/><br /><sub><b>Paul Betts</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Apaulcbetts" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=paulcbetts" title="Code">๐ป</a></td> | ||
<td align="center"><a href="https://github.com/turnerhayes"><img src="https://avatars1.githubusercontent.com/u/6371670?v=3" width="100px;" alt="Turner Hayes"/><br /><sub><b>Turner Hayes</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Aturnerhayes" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=turnerhayes" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=turnerhayes" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="https://github.com/sudo-suhas"><img src="https://avatars2.githubusercontent.com/u/22251956?v=4" width="100px;" alt="Suhas Karanth"/><br /><sub><b>Suhas Karanth</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=sudo-suhas" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=sudo-suhas" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="https://github.com/sventschui"><img src="https://avatars3.githubusercontent.com/u/512692?v=4" width="100px;" alt="Sven"/><br /><sub><b>Sven</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=sventschui" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=sventschui" title="Documentation">๐</a> <a href="#example-sventschui" title="Examples">๐ก</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=sventschui" title="Tests">โ ๏ธ</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/NicoZelaya"><img src="https://avatars0.githubusercontent.com/u/5522668?v=4" width="100px;" alt="D. Nicolรกs Lopez Zelaya"/><br /><sub><b>D. Nicolรกs Lopez Zelaya</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=NicoZelaya" title="Code">๐ป</a></td> | ||
<td align="center"><a href="http://bithavoc.io"><img src="https://avatars3.githubusercontent.com/u/219289?v=4" width="100px;" alt="Johan Hernandez"/><br /><sub><b>Johan Hernandez</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=bithavoc" title="Code">๐ป</a></td> | ||
<td align="center"><a href="https://github.com/jnielson94"><img src="https://avatars3.githubusercontent.com/u/13559161?v=4" width="100px;" alt="Jordan Nielson"/><br /><sub><b>Jordan Nielson</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/issues?q=author%3Ajnielson94" title="Bug reports">๐</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=jnielson94" title="Code">๐ป</a> <a href="https://github.com/kentcdodds/cross-env/commits?author=jnielson94" title="Tests">โ ๏ธ</a></td> | ||
<td align="center"><a href="https://nz.linkedin.com/in/jsonc11"><img src="https://avatars0.githubusercontent.com/u/5185660?v=4" width="100px;" alt="Jason Cooke"/><br /><sub><b>Jason Cooke</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=Jason-Cooke" title="Documentation">๐</a></td> | ||
<td align="center"><a href="https://github.com/bibo5088"><img src="https://avatars0.githubusercontent.com/u/17709887?v=4" width="100px;" alt="bibo5088"/><br /><sub><b>bibo5088</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=bibo5088" title="Code">๐ป</a></td> | ||
<td align="center"><a href="https://codefund.io"><img src="https://avatars2.githubusercontent.com/u/12481?v=4" width="100px;" alt="Eric Berry"/><br /><sub><b>Eric Berry</b></sub></a><br /><a href="#fundingFinding-coderberry" title="Funding Finding">๐</a></td> | ||
</tr> | ||
</table> | ||
<!-- ALL-CONTRIBUTORS-LIST:END --> | ||
This project follows the [all-contributors][all-contributors] specification. Contributions of any kind welcome! | ||
This project follows the [all-contributors][all-contributors] specification. | ||
Contributions of any kind welcome! | ||
> Note: this was added late into the project. If you've contributed to this | ||
> project in any way, please make a pull request to add yourself to the list | ||
> by following the instructions in the `CONTRIBUTING.md` | ||
> project in any way, please make a pull request to add yourself to the list by | ||
> following the instructions in the `CONTRIBUTING.md` | ||
@@ -194,33 +241,24 @@ ## LICENSE | ||
[node]: https://nodejs.org | ||
[build-badge]: https://img.shields.io/travis/kentcdodds/cross-env.svg?style=flat-square | ||
[build-badge]: | ||
https://img.shields.io/travis/kentcdodds/cross-env.svg?style=flat-square | ||
[build]: https://travis-ci.org/kentcdodds/cross-env | ||
[win-build-badge]: https://img.shields.io/appveyor/ci/kentcdodds/cross-env.svg?style=flat-square | ||
[win-build-badge]: | ||
https://img.shields.io/appveyor/ci/kentcdodds/cross-env.svg?style=flat-square | ||
[win-build]: https://ci.appveyor.com/project/kentcdodds/cross-env | ||
[coverage-badge]: https://img.shields.io/codecov/c/github/kentcdodds/cross-env.svg?style=flat-square | ||
[coverage-badge]: | ||
https://img.shields.io/codecov/c/github/kentcdodds/cross-env.svg?style=flat-square | ||
[coverage]: https://codecov.io/github/kentcdodds/cross-env | ||
[dependencyci-badge]: https://dependencyci.com/github/kentcdodds/cross-env/badge?style=flat-square | ||
[dependencyci]: https://dependencyci.com/github/kentcdodds/cross-env | ||
[version-badge]: https://img.shields.io/npm/v/cross-env.svg?style=flat-square | ||
[package]: https://www.npmjs.com/package/cross-env | ||
[node-version-badge]: https://img.shields.io/badge/node-%3E%3D%204.0-orange.svg?style=flat-square | ||
[downloads-badge]: https://img.shields.io/npm/dm/cross-env.svg?style=flat-square | ||
[npm-stat]: http://npm-stat.com/charts.html?package=cross-env&from=2016-04-01 | ||
[npmtrends]: https://www.npmtrends.com/cross-env | ||
[license-badge]: https://img.shields.io/npm/l/cross-env.svg?style=flat-square | ||
[license]: https://github.com/kentcdodds/cross-env/blob/master/other/LICENSE | ||
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square | ||
[prs-badge]: | ||
https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square | ||
[prs]: http://makeapullrequest.com | ||
[donate-badge]: https://img.shields.io/badge/$-support-green.svg?style=flat-square | ||
[donate]: http://kcd.im/donate | ||
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square | ||
[coc]: https://github.com/kentcdodds/cross-env/blob/master/other/CODE_OF_CONDUCT.md | ||
[roadmap-badge]: https://img.shields.io/badge/%F0%9F%93%94-roadmap-CD9523.svg?style=flat-square | ||
[roadmap]: https://github.com/kentcdodds/cross-env/blob/master/other/ROADMAP.md | ||
[examples-badge]: https://img.shields.io/badge/%F0%9F%92%A1-examples-8C8E93.svg?style=flat-square | ||
[examples]: https://github.com/kentcdodds/cross-env/blob/master/other/EXAMPLES.md | ||
[github-watch-badge]: https://img.shields.io/github/watchers/kentcdodds/cross-env.svg?style=social | ||
[github-watch]: https://github.com/kentcdodds/cross-env/watchers | ||
[github-star-badge]: https://img.shields.io/github/stars/kentcdodds/cross-env.svg?style=social | ||
[github-star]: https://github.com/kentcdodds/cross-env/stargazers | ||
[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20cross-env!%20https://github.com/kentcdodds/cross-env%20%F0%9F%91%8D | ||
[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/kentcdodds/cross-env.svg?style=social | ||
[coc-badge]: | ||
https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square | ||
[coc]: | ||
https://github.com/kentcdodds/cross-env/blob/master/other/CODE_OF_CONDUCT.md | ||
[emojis]: https://github.com/kentcdodds/all-contributors#emoji-key | ||
@@ -232,2 +270,3 @@ [all-contributors]: https://github.com/kentcdodds/all-contributors | ||
[ts-loader]: https://www.npmjs.com/package/ts-loader | ||
[malware]: http://blog.npmjs.org/post/163723642530/crossenv-malware-on-the-npm-registry | ||
[malware]: | ||
http://blog.npmjs.org/post/163723642530/crossenv-malware-on-the-npm-registry |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
262
27779
2
190
+ Added@babel/runtime@^7.6.2
+ Added@babel/runtime@7.26.0(transitive)
+ Addedregenerator-runtime@0.14.1(transitive)