init
This commit is contained in:
5
mc_test/node_modules/cross-env/CHANGELOG.md
generated
vendored
Executable file
5
mc_test/node_modules/cross-env/CHANGELOG.md
generated
vendored
Executable file
@ -0,0 +1,5 @@
|
||||
# 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).
|
||||
20
mc_test/node_modules/cross-env/LICENSE
generated
vendored
Executable file
20
mc_test/node_modules/cross-env/LICENSE
generated
vendored
Executable file
@ -0,0 +1,20 @@
|
||||
The MIT License (MIT)
|
||||
Copyright (c) 2017 Kent C. Dodds
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
291
mc_test/node_modules/cross-env/README.md
generated
vendored
Executable file
291
mc_test/node_modules/cross-env/README.md
generated
vendored
Executable file
@ -0,0 +1,291 @@
|
||||
<div align="center">
|
||||
<h1>cross-env 🔀</h1>
|
||||
|
||||
<p>Run scripts that set and use environment variables across platforms</p>
|
||||
</div>
|
||||
|
||||
**🚨 NOTICE: cross-env still works well, but is in maintenance mode. No new
|
||||
features will be added, only serious and common-case bugs will be fixed, and
|
||||
it will only be kept up-to-date with Node.js over time.
|
||||
[Learn more](https://github.com/kentcdodds/cross-env/issues/257)**
|
||||
|
||||
---
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
[![Build Status][build-badge]][build]
|
||||
[![Code Coverage][coverage-badge]][coverage]
|
||||
[![version][version-badge]][package]
|
||||
[![downloads][downloads-badge]][npmtrends]
|
||||
[![MIT License][license-badge]][license]
|
||||
[![All Contributors][all-contributors-badge]](#contributors-)
|
||||
[![PRs Welcome][prs-badge]][prs]
|
||||
[![Code of Conduct][coc-badge]][coc]
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
## The problem
|
||||
|
||||
Most Windows command prompts will choke when you set environment variables with
|
||||
`NODE_ENV=production` like that. (The exception is [Bash on Windows][win-bash],
|
||||
which uses native Bash.) Similarly, there's a difference in how windows and
|
||||
POSIX commands utilize environment variables. With POSIX, you use: `$ENV_VAR`
|
||||
and on windows you use `%ENV_VAR%`.
|
||||
|
||||
## This solution
|
||||
|
||||
`cross-env` makes it so you can have a single command without worrying about
|
||||
setting or using the environment variable properly for the platform. Just set it
|
||||
like you would if it's running on a POSIX system, and `cross-env` will take care
|
||||
of setting it properly.
|
||||
|
||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||
|
||||
- [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 -->
|
||||
|
||||
## Installation
|
||||
|
||||
This module is distributed via [npm][npm] which is bundled with [node][node] and
|
||||
should be installed as one of your project's `devDependencies`:
|
||||
|
||||
```
|
||||
npm install --save-dev cross-env
|
||||
```
|
||||
|
||||
> WARNING! Make sure that when you're installing packages that you spell things
|
||||
> correctly to avoid [mistakenly installing malware][malware]
|
||||
|
||||
> NOTE : Version 7 of cross-env only supports Node.js 10 and higher, to use it on
|
||||
> Node.js 8 or lower install version 6 `npm install --save-dev cross-env@6`
|
||||
|
||||
## Usage
|
||||
|
||||
I use this in my npm scripts:
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ultimately, the command that is executed (using [`cross-spawn`][cross-spawn])
|
||||
is:
|
||||
|
||||
```
|
||||
webpack --config build/webpack.config.js
|
||||
```
|
||||
|
||||
The `NODE_ENV` environment variable will be set by `cross-env`
|
||||
|
||||
You can set multiple environment variables at a time:
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"build": "cross-env FIRST_ENV=one SECOND_ENV=two node ./my-program"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can also split a command into several ones, or separate the environment
|
||||
variables declaration from the actual command execution. You can do it this way:
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"parentScript": "cross-env GREET=\"Joe\" npm run childScript",
|
||||
"childScript": "cross-env-shell \"echo Hello $GREET\""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Where `childScript` holds the actual command to execute and `parentScript` sets
|
||||
the environment variables to use. Then instead of run the childScript you run
|
||||
the parent. This is quite useful for launching the same command with different
|
||||
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
|
||||
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.
|
||||
|
||||
Lastly, if you want to pass a JSON string (e.g., when using [ts-loader]), you
|
||||
can do as follows:
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"test": "cross-env TS_NODE_COMPILER_OPTIONS={\\\"module\\\":\\\"commonjs\\\"} node some_file.test.ts"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
## `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`.
|
||||
|
||||
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
|
||||
`cross-env-shell` instead of `cross-env`.
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"greet": "cross-env-shell GREETING=Hi NAME=Joe \"echo $GREETING && echo $NAME\""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
## Windows Issues
|
||||
|
||||
Please note that `npm` uses `cmd` by default and that doesn't support command
|
||||
substitution, so if you want to leverage that, then you need to update your
|
||||
`.npmrc` to set the `script-shell` to powershell.
|
||||
[Learn more here](https://github.com/kentcdodds/cross-env/issues/192#issuecomment-513341729).
|
||||
|
||||
## Inspiration
|
||||
|
||||
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.
|
||||
|
||||
## 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
|
||||
|
||||
## Issues
|
||||
|
||||
_Looking to contribute? Look for the [Good First Issue][good-first-issue]
|
||||
label._
|
||||
|
||||
### 🐛 Bugs
|
||||
|
||||
Please file an issue for bugs, missing documentation, or unexpected behavior.
|
||||
|
||||
[**See Bugs**][bugs]
|
||||
|
||||
### 💡 Feature Requests
|
||||
|
||||
This project is in maintenance mode and no new feature requests will be considered.
|
||||
|
||||
[**Learn more**](https://github.com/kentcdodds/cross-env/issues/257)
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these people ([emoji key][emojis]):
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><a href="https://kentcdodds.com"><img src="https://avatars.githubusercontent.com/u/1500684?v=3" width="100px;" alt=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><br /><sub><b>Eric Berry</b></sub></a><br /><a href="#fundingFinding-coderberry" title="Funding Finding">🔍</a></td>
|
||||
<td align="center"><a href="https://michaeldeboey.be"><img src="https://avatars3.githubusercontent.com/u/6643991?v=4" width="100px;" alt=""/><br /><sub><b>Michaël De Boey</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=MichaelDeBoey" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/lauriii"><img src="https://avatars0.githubusercontent.com/u/1845495?v=4" width="100px;" alt=""/><br /><sub><b>Lauri Eskola</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=lauriii" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/devuxer"><img src="https://avatars0.githubusercontent.com/u/1298521?v=4" width="100px;" alt=""/><br /><sub><b>devuxer</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=devuxer" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/dsbert"><img src="https://avatars2.githubusercontent.com/u/1320090?v=4" width="100px;" alt=""/><br /><sub><b>Daniel</b></sub></a><br /><a href="https://github.com/kentcdodds/cross-env/commits?author=dsbert" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-enable -->
|
||||
<!-- prettier-ignore-end -->
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
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`
|
||||
|
||||
## LICENSE
|
||||
|
||||
MIT
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
[npm]: https://npmjs.com
|
||||
[node]: https://nodejs.org
|
||||
[build-badge]: https://img.shields.io/github/workflow/status/kentcdodds/cross-env/validate?logo=github&style=flat-square
|
||||
[build]: https://github.com/kentcdodds/cross-env/actions?query=workflow%3Avalidate
|
||||
[coverage-badge]: https://img.shields.io/codecov/c/github/kentcdodds/cross-env.svg?style=flat-square
|
||||
[coverage]: https://codecov.io/github/kentcdodds/cross-env
|
||||
[version-badge]: https://img.shields.io/npm/v/gatsby-remark-embedder.svg?style=flat-square
|
||||
[package]: https://www.npmjs.com/package/gatsby-remark-embedder
|
||||
[downloads-badge]: https://img.shields.io/npm/dm/gatsby-remark-embedder.svg?style=flat-square
|
||||
[npmtrends]: http://www.npmtrends.com/gatsby-remark-embedder
|
||||
[license-badge]: https://img.shields.io/npm/l/gatsby-remark-embedder.svg?style=flat-square
|
||||
[license]: https://github.com/kentcdodds/cross-env/blob/master/LICENSE
|
||||
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
|
||||
[prs]: http://makeapullrequest.com
|
||||
[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://allcontributors.org/docs/en/emoji-key
|
||||
[all-contributors]: https://github.com/all-contributors/all-contributors
|
||||
[all-contributors-badge]: https://img.shields.io/github/all-contributors/kentcdodds/cross-env?color=orange&style=flat-square
|
||||
[bugs]: https://github.com/kentcdodds/cross-env/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%90%9B+Bug%22+sort%3Acreated-desc
|
||||
[good-first-issue]: https://github.com/kentcdodds/cross-env/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3A%22good+first+issue%22
|
||||
|
||||
[angular-formly]: https://github.com/formly-js/angular-formly
|
||||
[cross-spawn]: https://www.npmjs.com/package/cross-spawn
|
||||
[malware]: http://blog.npmjs.org/post/163723642530/crossenv-malware-on-the-npm-registry
|
||||
[ts-loader]: https://www.npmjs.com/package/ts-loader
|
||||
[win-bash]: https://msdn.microsoft.com/en-us/commandline/wsl/about
|
||||
<!-- prettier-ignore-end -->
|
||||
54
mc_test/node_modules/cross-env/package.json
generated
vendored
Executable file
54
mc_test/node_modules/cross-env/package.json
generated
vendored
Executable file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "cross-env",
|
||||
"version": "7.0.3",
|
||||
"description": "Run scripts that set and use environment variables across platforms",
|
||||
"main": "src/index.js",
|
||||
"bin": {
|
||||
"cross-env": "src/bin/cross-env.js",
|
||||
"cross-env-shell": "src/bin/cross-env-shell.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.14",
|
||||
"npm": ">=6",
|
||||
"yarn": ">=1"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "kcd-scripts lint",
|
||||
"setup": "npm install && npm run validate -s",
|
||||
"test": "kcd-scripts test",
|
||||
"test:update": "npm test -- --updateSnapshot --coverage",
|
||||
"validate": "kcd-scripts validate"
|
||||
},
|
||||
"files": [
|
||||
"src",
|
||||
"!__tests__"
|
||||
],
|
||||
"keywords": [
|
||||
"cross-environment",
|
||||
"environment variable",
|
||||
"windows"
|
||||
],
|
||||
"author": "Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com)",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"kcd-scripts": "^5.5.0"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "./node_modules/kcd-scripts/eslint.js"
|
||||
},
|
||||
"// babel 1": "this disables all built-in plugins from kcd-scripts for tests",
|
||||
"// babel 2": "that way we ensure that the tests run without compilation",
|
||||
"// babel 3": "because this module is published as-is. It is not compiled.",
|
||||
"babel": {},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kentcdodds/cross-env.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/kentcdodds/cross-env/issues"
|
||||
},
|
||||
"homepage": "https://github.com/kentcdodds/cross-env#readme"
|
||||
}
|
||||
5
mc_test/node_modules/cross-env/src/bin/cross-env-shell.js
generated
vendored
Executable file
5
mc_test/node_modules/cross-env/src/bin/cross-env-shell.js
generated
vendored
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const crossEnv = require('..')
|
||||
|
||||
crossEnv(process.argv.slice(2), {shell: true})
|
||||
5
mc_test/node_modules/cross-env/src/bin/cross-env.js
generated
vendored
Executable file
5
mc_test/node_modules/cross-env/src/bin/cross-env.js
generated
vendored
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const crossEnv = require('..')
|
||||
|
||||
crossEnv(process.argv.slice(2))
|
||||
32
mc_test/node_modules/cross-env/src/command.js
generated
vendored
Executable file
32
mc_test/node_modules/cross-env/src/command.js
generated
vendored
Executable file
@ -0,0 +1,32 @@
|
||||
const path = require('path')
|
||||
const isWindows = require('./is-windows')
|
||||
|
||||
module.exports = commandConvert
|
||||
|
||||
/**
|
||||
* Converts an environment variable usage to be appropriate for the current OS
|
||||
* @param {String} command Command to convert
|
||||
* @param {Object} env Map of the current environment variable names and their values
|
||||
* @param {boolean} normalize If the command should be normalized using `path`
|
||||
* after converting
|
||||
* @returns {String} Converted command
|
||||
*/
|
||||
function commandConvert(command, env, normalize = false) {
|
||||
if (!isWindows()) {
|
||||
return command
|
||||
}
|
||||
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
|
||||
// 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 ? path.normalize(convertedCmd) : convertedCmd
|
||||
}
|
||||
95
mc_test/node_modules/cross-env/src/index.js
generated
vendored
Executable file
95
mc_test/node_modules/cross-env/src/index.js
generated
vendored
Executable file
@ -0,0 +1,95 @@
|
||||
const {spawn} = require('cross-spawn')
|
||||
const commandConvert = require('./command')
|
||||
const varValueConvert = require('./variable')
|
||||
|
||||
module.exports = crossEnv
|
||||
|
||||
const envSetterRegex = /(\w+)=('(.*)'|"(.*)"|(.*))/
|
||||
|
||||
function crossEnv(args, options = {}) {
|
||||
const [envSetters, command, commandArgs] = parseCommand(args)
|
||||
const env = getEnvVars(envSetters)
|
||||
if (command) {
|
||||
const proc = spawn(
|
||||
// run `path.normalize` for command(on windows)
|
||||
commandConvert(command, env, true),
|
||||
// by default normalize is `false`, so not run for cmd args
|
||||
commandArgs.map(arg => commandConvert(arg, env)),
|
||||
{
|
||||
stdio: 'inherit',
|
||||
shell: options.shell,
|
||||
env,
|
||||
},
|
||||
)
|
||||
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
|
||||
})
|
||||
return proc
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
function parseCommand(args) {
|
||||
const envSetters = {}
|
||||
let command = null
|
||||
let commandArgs = []
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
const match = envSetterRegex.exec(args[i])
|
||||
if (match) {
|
||||
let value
|
||||
|
||||
if (typeof match[3] !== 'undefined') {
|
||||
value = match[3]
|
||||
} else if (typeof match[4] === 'undefined') {
|
||||
value = match[5]
|
||||
} else {
|
||||
value = match[4]
|
||||
}
|
||||
|
||||
envSetters[match[1]] = value
|
||||
} else {
|
||||
// No more env setters, the rest of the line must be the command and args
|
||||
let cStart = []
|
||||
cStart = args
|
||||
.slice(i)
|
||||
// Regex:
|
||||
// match "\'" or "'"
|
||||
// or match "\" if followed by [$"\] (lookahead)
|
||||
.map(a => {
|
||||
const re = /\\\\|(\\)?'|([\\])(?=[$"\\])/g
|
||||
// Eliminate all matches except for "\'" => "'"
|
||||
return a.replace(re, m => {
|
||||
if (m === '\\\\') return '\\'
|
||||
if (m === "\\'") return "'"
|
||||
return ''
|
||||
})
|
||||
})
|
||||
command = cStart[0]
|
||||
commandArgs = cStart.slice(1)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return [envSetters, command, commandArgs]
|
||||
}
|
||||
|
||||
function getEnvVars(envSetters) {
|
||||
const envVars = {...process.env}
|
||||
if (process.env.APPDATA) {
|
||||
envVars.APPDATA = process.env.APPDATA
|
||||
}
|
||||
Object.keys(envSetters).forEach(varName => {
|
||||
envVars[varName] = varValueConvert(envSetters[varName], varName)
|
||||
})
|
||||
return envVars
|
||||
}
|
||||
2
mc_test/node_modules/cross-env/src/is-windows.js
generated
vendored
Executable file
2
mc_test/node_modules/cross-env/src/is-windows.js
generated
vendored
Executable file
@ -0,0 +1,2 @@
|
||||
module.exports = () =>
|
||||
process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE)
|
||||
69
mc_test/node_modules/cross-env/src/variable.js
generated
vendored
Executable file
69
mc_test/node_modules/cross-env/src/variable.js
generated
vendored
Executable file
@ -0,0 +1,69 @@
|
||||
const isWindows = require('./is-windows')
|
||||
|
||||
const pathLikeEnvVarWhitelist = new Set(['PATH', 'NODE_PATH'])
|
||||
|
||||
module.exports = varValueConvert
|
||||
|
||||
/**
|
||||
* This will transform UNIX-style list values to Windows-style.
|
||||
* For example, the value of the $PATH variable "/usr/bin:/usr/local/bin:."
|
||||
* will become "/usr/bin;/usr/local/bin;." on Windows.
|
||||
* @param {String} varValue Original value of the env variable
|
||||
* @param {String} varName Original name of the env variable
|
||||
* @returns {String} Converted value
|
||||
*/
|
||||
function replaceListDelimiters(varValue, varName = '') {
|
||||
const targetSeparator = isWindows() ? ';' : ':'
|
||||
if (!pathLikeEnvVarWhitelist.has(varName)) {
|
||||
return varValue
|
||||
}
|
||||
|
||||
return varValue.replace(/(\\*):/g, (match, backslashes) => {
|
||||
if (backslashes.length % 2) {
|
||||
// Odd number of backslashes preceding it means it's escaped,
|
||||
// remove 1 backslash and return the rest as-is
|
||||
return match.substr(1)
|
||||
}
|
||||
return backslashes + targetSeparator
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* This will attempt to resolve the value of any env variables that are inside
|
||||
* this string. For example, it will transform this:
|
||||
* cross-env FOO=$NODE_ENV BAR=\\$NODE_ENV echo $FOO $BAR
|
||||
* Into this:
|
||||
* FOO=development BAR=$NODE_ENV echo $FOO
|
||||
* (Or whatever value the variable NODE_ENV has)
|
||||
* Note that this function is only called with the right-side portion of the
|
||||
* env var assignment, so in that example, this function would transform
|
||||
* the string "$NODE_ENV" into "development"
|
||||
* @param {String} varValue Original value of the env variable
|
||||
* @returns {String} Converted value
|
||||
*/
|
||||
function resolveEnvVars(varValue) {
|
||||
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 \
|
||||
if (escapeChars.length % 2 === 1) {
|
||||
return varNameWithDollarSign
|
||||
}
|
||||
return (
|
||||
escapeChars.substr(0, escapeChars.length / 2) +
|
||||
(process.env[varName || altVarName] || '')
|
||||
)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an environment variable value to be appropriate for the current OS.
|
||||
* @param {String} originalValue Original value of the env variable
|
||||
* @param {String} originalName Original name of the env variable
|
||||
* @returns {String} Converted value
|
||||
*/
|
||||
function varValueConvert(originalValue, originalName) {
|
||||
return resolveEnvVars(replaceListDelimiters(originalValue, originalName))
|
||||
}
|
||||
Reference in New Issue
Block a user