Add Create Next App package (#8018)
* Add Create Next App package * Fix Create Next App tests * Fix company name * Update package.json
This commit is contained in:
parent
3c1355686a
commit
4eb8aba692
23 changed files with 1564 additions and 12 deletions
|
@ -78,6 +78,7 @@
|
|||
"cross-spawn": "6.0.5",
|
||||
"eslint": "5.16.0",
|
||||
"eslint-plugin-typescript": "0.14.0",
|
||||
"execa": "2.0.3",
|
||||
"express": "4.17.0",
|
||||
"faunadb": "2.6.1",
|
||||
"fs-extra": "7.0.1",
|
||||
|
|
9
packages/create-next-app/LICENSE
Normal file
9
packages/create-next-app/LICENSE
Normal file
|
@ -0,0 +1,9 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2017-present Segment.io, Inc. friends@segment.com
|
||||
|
||||
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.
|
189
packages/create-next-app/README.md
Normal file
189
packages/create-next-app/README.md
Normal file
|
@ -0,0 +1,189 @@
|
|||
<h1 align="center">Create Next App</h1>
|
||||
|
||||
<!-- description -->
|
||||
<p align="center">
|
||||
The easiest way to create a <a href="https://facebook.github.io/react">React</a> app with server-side rendering thanks to <a href="https://github.com/zeit/next.js">Next.js</a>
|
||||
</p>
|
||||
|
||||
<!-- badges -->
|
||||
<p align="center">
|
||||
<a href="https://github.com/unicodeveloper/awesome-nextjs"><img alt="Mentioned in Awesome Next JS" src="https://awesome.re/mentioned-badge.svg" /></a>
|
||||
</p>
|
||||
|
||||
<!-- toc -->
|
||||
<p align="center">
|
||||
<em>
|
||||
<a href="#getting-started">Getting Started</a>
|
||||
· <a href="https://github.com/zeit/create-next-app/blob/master/lib/templates/default/README.md">Starting from scratch with Create Next App</a>
|
||||
· <a href="#starting-from-nextjs-examples">Starting from Next.js Examples</a>
|
||||
</em>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
If you run into any issues or have feedback, please <a href="https://github.com/zeit/create-next-app/issues/new">file an issue</a>
|
||||
</p>
|
||||
|
||||
## Overview
|
||||
|
||||
| | [npx](https://github.com/zkat/npx) & npm (Node 8.x.x+) | [yarn create](https://yarnpkg.com/en/docs/cli/create) (Yarn 1.0.0+) | manual install (Node 6.x.x+) |
|
||||
| --- | ------------------------------------------------------ | ------------------------------------------------------------------- | -------------------------------- |
|
||||
| 1. | `npx create-next-app my-app` | `yarn create next-app my-app` | `npm install -g create-next-app` |
|
||||
| 2. | `cd my-app/` | `cd my-app/` | `create-next-app my-app` |
|
||||
| 3. | `npm run dev` | `yarn dev` | `cd my-app/` |
|
||||
| 4. | | | `npm run dev` |
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) to view your running app.
|
||||
When you're ready for production, run the `build` then `start` scripts.
|
||||
|
||||
<p align='center'>
|
||||
<img width="600" alt="Create Next App running in terminal" src="media/init-app.png" />
|
||||
</p>
|
||||
|
||||
<p align='center'>
|
||||
<img width="600" alt="Create Next App running in terminal" src="media/dev-tree.png" />
|
||||
</p>
|
||||
|
||||
### Start Coding Now
|
||||
|
||||
You **don't** need to install or setup Webpack or Babel.
|
||||
They come packaged with `next`, so you can just start coding.
|
||||
|
||||
After running `create-next-app`, you're good to go!
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Creating an App
|
||||
|
||||
Follow the steps in the [above table](#overview):
|
||||
|
||||
Minimum Requirements:
|
||||
|
||||
- Node >= `6.x.x` - Use [nvm](https://github.com/creationix/nvm#usage) or [asdf](https://github.com/asdf-vm/asdf#readme) to easily switch Node versions between projects.
|
||||
|
||||
**You don't need to use Node as your primary backend**. The Node installation is only required for Create Next App and running the Next.js server in development/production.
|
||||
|
||||
### What's in an App
|
||||
|
||||
`create-next-app` will have created a directory called `my-app` inside the current folder. Inside that directory, it will generate the initial project structure and install necessary dependencies:
|
||||
|
||||
```
|
||||
.
|
||||
├── README.md
|
||||
├── components
|
||||
│ ├── head.js
|
||||
│ └── nav.js
|
||||
├── next.config.js
|
||||
├── node_modules
|
||||
│ ├── [...]
|
||||
├── package.json
|
||||
├── pages
|
||||
│ └── index.js
|
||||
├── static
|
||||
│ └── favicon.ico
|
||||
└── yarn.lock
|
||||
```
|
||||
|
||||
Routing in Next.js is based on the file system, so `./pages/index.js` maps to the `/` route and
|
||||
`./pages/about.js` would map to `/about`.
|
||||
|
||||
The `./static` directory maps to `/static` in the `next` server, so you can put all your
|
||||
other static resources like images or compiled CSS in there.
|
||||
|
||||
Out of the box, we get:
|
||||
|
||||
- Automatic transpilation and bundling (with webpack and babel)
|
||||
- Hot code reloading
|
||||
- Server rendering and indexing of `./pages`
|
||||
- Static file serving. `./static/` is mapped to `/static/`
|
||||
|
||||
Once the installation is finished, you can run some commands in your project:
|
||||
|
||||
### `npm run dev` or `yarn dev`
|
||||
|
||||
Runs the app in the development mode.<br>
|
||||
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
|
||||
|
||||
The page will reload if you make edits.<br>
|
||||
You will also see any errors in the console.
|
||||
|
||||
### `npm run build` or `yarn build`
|
||||
|
||||
Builds the app for production to the `.next` folder.<br>
|
||||
It correctly bundles React in production mode and optimizes the build for the best performance.
|
||||
|
||||
### `npm run start` or `yarn start`
|
||||
|
||||
Starts the application in production mode.
|
||||
The application should be compiled with \`npm run build\` first.
|
||||
|
||||
Now you're ready to code & deploy your app!
|
||||
|
||||
## Starting from Next.js Examples
|
||||
|
||||
There are a ton of examples in the [Next.js repo](https://github.com/zeit/next.js/tree/master/examples/) (and growing!) that you can use to bootstrap your app.
|
||||
|
||||
To use an example:
|
||||
|
||||
1. Go to https://open.segment.com/create-next-app#examples
|
||||
2. Search for an example you want and get it's name (looks like `basic-css`)
|
||||
3. Run: `create-next-app --example basic-css example-app`
|
||||
4. Done 💥
|
||||
|
||||
**It is worth noting that the _basic-css_ example above uses [styled-jsx](https://github.com/zeit/styled-jsx).**
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
We are grateful to the authors of existing related projects for their ideas as inspiration:
|
||||
|
||||
- [Create React App](https://github.com/facebookincubator/create-react-app)
|
||||
- [Next.js](https://github.com/zeit/next.js)
|
||||
- [@eanplatter](https://github.com/eanplatter)
|
||||
- [@insin](https://github.com/insin)
|
||||
- [@mxstbr](https://github.com/mxstbr)
|
||||
|
||||
Looking for alternatives? Here are some other project starter kits:
|
||||
|
||||
- [Create React App](https://github.com/facebookincubator/create-react-app)
|
||||
- [insin/nwb](https://github.com/insin/nwb)
|
||||
- [mozilla-neutrino/neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev)
|
||||
- [NYTimes/kyt](https://github.com/NYTimes/kyt)
|
||||
- [gatsbyjs/gatsby](https://github.com/gatsbyjs/gatsby)
|
||||
- [enclave](https://github.com/eanplatter/enclave)
|
||||
- [motion](https://github.com/motion/motion)
|
||||
- [quik](https://github.com/satya164/quik)
|
||||
- [sagui](https://github.com/saguijs/sagui)
|
||||
- [roc](https://github.com/rocjs/roc)
|
||||
- [aik](https://github.com/d4rkr00t/aik)
|
||||
- [react-app](https://github.com/kriasoft/react-app)
|
||||
- [dev-toolkit](https://github.com/stoikerty/dev-toolkit)
|
||||
- [tarec](https://github.com/geowarin/tarec)
|
||||
- [sku](https://github.com/seek-oss/sku)
|
||||
|
||||
Questions? Feedback? [Please let us know](https://github.com/zeit/create-next-app/issues/new)
|
||||
|
||||
## Maintainers
|
||||
|
||||
This repo, `create-next-app`, was previously maintiained by Segment, Inc. It is now maintained by ZEIT, Inc.
|
||||
|
||||
## License (MIT)
|
||||
|
||||
```
|
||||
WWWWWW||WWWWWW
|
||||
W W W||W W W
|
||||
||
|
||||
( OO )__________
|
||||
/ | \
|
||||
/o o| MIT \
|
||||
\___/||_||__||_|| *
|
||||
|| || || ||
|
||||
_||_|| _||_||
|
||||
(__|__|(__|__|
|
||||
```
|
||||
|
||||
Copyright (c) 2017-present Segment.io, Inc. friends@segment.com
|
||||
|
||||
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.
|
30
packages/create-next-app/cli.js
Executable file
30
packages/create-next-app/cli.js
Executable file
|
@ -0,0 +1,30 @@
|
|||
#! /usr/bin/env node
|
||||
|
||||
const chalk = require('chalk')
|
||||
const program = require('commander')
|
||||
const lib = require('.')
|
||||
const pkg = require('./package.json')
|
||||
|
||||
const messages = lib.messages
|
||||
const createNextApp = lib.createNextApp
|
||||
|
||||
let projectName
|
||||
|
||||
program
|
||||
.version(pkg.version)
|
||||
.arguments('<project-directory>')
|
||||
.usage(`${chalk.green('<project-directory>')} [options]`)
|
||||
.action(function (name) {
|
||||
projectName = name
|
||||
})
|
||||
.option('-e, --example <example-path>', messages.exampleHelp())
|
||||
.allowUnknownOption()
|
||||
.on('--help', messages.help)
|
||||
.parse(process.argv)
|
||||
|
||||
const example = program.example
|
||||
|
||||
createNextApp({
|
||||
projectName,
|
||||
example
|
||||
})
|
7
packages/create-next-app/index.js
Normal file
7
packages/create-next-app/index.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
const createNextApp = require('./lib')
|
||||
const messages = require('./lib/messages')
|
||||
|
||||
module.exports = {
|
||||
messages: messages,
|
||||
createNextApp: createNextApp
|
||||
}
|
60
packages/create-next-app/lib/index.js
Normal file
60
packages/create-next-app/lib/index.js
Normal file
|
@ -0,0 +1,60 @@
|
|||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const copyDir = require('./utils/copy-dir')
|
||||
const install = require('./utils/install')
|
||||
const loadExample = require('./utils/load-example')
|
||||
const messages = require('./messages')
|
||||
|
||||
module.exports = function createNextApp (opts) {
|
||||
const projectName = opts.projectName
|
||||
|
||||
if (!projectName) {
|
||||
console.log(messages.missingProjectName())
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
if (fs.existsSync(projectName) && projectName !== '.') {
|
||||
console.log(messages.alreadyExists(projectName))
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const projectPath = (opts.projectPath = process.cwd() + '/' + projectName)
|
||||
|
||||
if (opts.example) {
|
||||
loadExample({
|
||||
projectName: projectName,
|
||||
example: opts.example
|
||||
}).then(installWithMessageFactory(opts))
|
||||
} else {
|
||||
const templatePath = path.resolve(__dirname, './templates/default')
|
||||
|
||||
copyDir({
|
||||
templatePath: templatePath,
|
||||
projectPath: projectPath,
|
||||
projectName: projectName
|
||||
})
|
||||
.then(installWithMessageFactory(opts))
|
||||
.catch(function (err) {
|
||||
throw err
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function installWithMessageFactory (opts) {
|
||||
const projectName = opts.projectName
|
||||
const projectPath = opts.projectPath
|
||||
|
||||
return function installWithMessage () {
|
||||
return install({
|
||||
projectName: projectName,
|
||||
projectPath: projectPath,
|
||||
packages: ['react', 'react-dom', 'next']
|
||||
})
|
||||
.then(function () {
|
||||
console.log(messages.start(projectName))
|
||||
})
|
||||
.catch(function (err) {
|
||||
throw err
|
||||
})
|
||||
}
|
||||
}
|
112
packages/create-next-app/lib/messages.js
Normal file
112
packages/create-next-app/lib/messages.js
Normal file
|
@ -0,0 +1,112 @@
|
|||
const chalk = require('chalk')
|
||||
const getInstallCmd = require('./utils/get-install-cmd')
|
||||
const output = require('./utils/output')
|
||||
|
||||
const program = {
|
||||
name: 'create-next-app'
|
||||
}
|
||||
|
||||
exports.help = function () {
|
||||
return `
|
||||
Only ${chalk.green('<project-directory>')} is required.
|
||||
|
||||
If you have any problems, do not hesitate to file an issue:
|
||||
${chalk.cyan('https://github.com/zeit/create-next-app/issues/new')}
|
||||
`
|
||||
}
|
||||
|
||||
exports.exampleHelp = function () {
|
||||
return `Example from https://github.com/zeit/next.js/tree/master/examples/ ${output.param(
|
||||
'example-path'
|
||||
)}`
|
||||
}
|
||||
|
||||
exports.missingProjectName = function () {
|
||||
return `
|
||||
Please specify the project directory:
|
||||
|
||||
${chalk.cyan(program.name)} ${chalk.green('<project-directory>')}
|
||||
|
||||
For example:
|
||||
|
||||
${chalk.cyan(program.name)} ${chalk.green('my-next-app')}
|
||||
${chalk.cyan(program.name)} ${chalk.cyan(
|
||||
'--example custom-server'
|
||||
)} ${chalk.green('custom-server-app')}
|
||||
|
||||
Run ${chalk.cyan(`${program.name} --help`)} to see all options.
|
||||
`
|
||||
}
|
||||
|
||||
exports.alreadyExists = function (projectName) {
|
||||
return `
|
||||
Uh oh! Looks like there's already a directory called ${chalk.red(
|
||||
projectName
|
||||
)}. Please try a different name or delete that folder.`
|
||||
}
|
||||
|
||||
exports.installing = function (packages) {
|
||||
const pkgText = packages
|
||||
.map(function (pkg) {
|
||||
return ` ${chalk.cyan(chalk.bold(pkg))}`
|
||||
})
|
||||
.join('\n')
|
||||
|
||||
return `
|
||||
Installing npm modules:
|
||||
${pkgText}
|
||||
`
|
||||
}
|
||||
|
||||
exports.installError = function (packages) {
|
||||
const pkgText = packages
|
||||
.map(function (pkg) {
|
||||
return `${chalk.cyan(chalk.bold(pkg))}`
|
||||
})
|
||||
.join(', ')
|
||||
|
||||
output.error(`Failed to install ${pkgText}, try again.`)
|
||||
}
|
||||
|
||||
exports.copying = function (projectName) {
|
||||
return `
|
||||
Creating ${chalk.bold(chalk.green(projectName))}...
|
||||
`
|
||||
}
|
||||
|
||||
exports.start = function (projectName) {
|
||||
const cmd = getInstallCmd()
|
||||
|
||||
const commands = {
|
||||
install: cmd === 'npm' ? 'npm install' : 'yarn',
|
||||
build: cmd === 'npm' ? 'npm run build' : 'yarn build',
|
||||
start: cmd === 'npm' ? 'npm run start' : 'yarn start',
|
||||
dev: cmd === 'npm' ? 'npm run dev' : 'yarn dev'
|
||||
}
|
||||
|
||||
return `
|
||||
${chalk.green('Awesome!')} You're now ready to start coding.
|
||||
|
||||
We already ran ${output.cmd(
|
||||
commands.install
|
||||
)} for you, so your next steps are:
|
||||
|
||||
$ ${output.cmd(`cd ${projectName}`)}
|
||||
|
||||
To build a version for production:
|
||||
|
||||
$ ${output.cmd(commands.build)}
|
||||
|
||||
To run the server in production:
|
||||
|
||||
$ ${output.cmd(commands.start)}
|
||||
|
||||
To start a local server for development:
|
||||
|
||||
$ ${output.cmd(commands.dev)}
|
||||
|
||||
Questions? Feedback? Please let us know!
|
||||
|
||||
${chalk.green('https://github.com/zeit/create-next-app/issues')}
|
||||
`
|
||||
}
|
234
packages/create-next-app/lib/templates/default/README.md
Normal file
234
packages/create-next-app/lib/templates/default/README.md
Normal file
|
@ -0,0 +1,234 @@
|
|||
This project was bootstrapped with [Create Next App](https://github.com/zeit/create-next-app).
|
||||
|
||||
Find the most recent version of this guide at [here](https://github.com/zeit/create-next-app/blob/master/lib/templates/default/README.md). And check out [Next.js repo](https://github.com/zeit/next.js) for the most up-to-date info.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Questions? Feedback?](#questions-feedback)
|
||||
- [Folder Structure](#folder-structure)
|
||||
- [Available Scripts](#available-scripts)
|
||||
- [npm run dev](#npm-run-dev)
|
||||
- [npm run build](#npm-run-build)
|
||||
- [npm run start](#npm-run-start)
|
||||
- [Using CSS](#using-css)
|
||||
- [Adding Components](#adding-components)
|
||||
- [Fetching Data](#fetching-data)
|
||||
- [Custom Server](#custom-server)
|
||||
- [Syntax Highlighting](#syntax-highlighting)
|
||||
- [Using the `static` Folder](#using-the-static-folder)
|
||||
- [Deploy to Now](#deploy-to-now)
|
||||
- [Something Missing?](#something-missing)
|
||||
|
||||
## Questions? Feedback?
|
||||
|
||||
Check out [Next.js FAQ & docs](https://github.com/zeit/next.js#faq) or [let us know](https://github.com/zeit/create-next-app/issues) your feedback.
|
||||
|
||||
## Folder Structure
|
||||
|
||||
After creating an app, it should look something like:
|
||||
|
||||
```
|
||||
.
|
||||
├── README.md
|
||||
├── components
|
||||
│ ├── head.js
|
||||
│ └── nav.js
|
||||
├── next.config.js
|
||||
├── node_modules
|
||||
│ ├── [...]
|
||||
├── package.json
|
||||
├── pages
|
||||
│ └── index.js
|
||||
├── static
|
||||
│ └── favicon.ico
|
||||
└── yarn.lock
|
||||
```
|
||||
|
||||
Routing in Next.js is based on the file system, so `./pages/index.js` maps to the `/` route and
|
||||
`./pages/about.js` would map to `/about`.
|
||||
|
||||
The `./static` directory maps to `/static` in the `next` server, so you can put all your
|
||||
other static resources like images or compiled CSS in there.
|
||||
|
||||
Out of the box, we get:
|
||||
|
||||
- Automatic transpilation and bundling (with webpack and babel)
|
||||
- Hot code reloading
|
||||
- Server rendering and indexing of `./pages`
|
||||
- Static file serving. `./static/` is mapped to `/static/`
|
||||
|
||||
Read more about [Next's Routing](https://github.com/zeit/next.js#routing)
|
||||
|
||||
## Available Scripts
|
||||
|
||||
In the project directory, you can run:
|
||||
|
||||
### `npm run dev`
|
||||
|
||||
Runs the app in the development mode.<br>
|
||||
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
|
||||
|
||||
The page will reload if you make edits.<br>
|
||||
You will also see any errors in the console.
|
||||
|
||||
### `npm run build`
|
||||
|
||||
Builds the app for production to the `.next` folder.<br>
|
||||
It correctly bundles React in production mode and optimizes the build for the best performance.
|
||||
|
||||
### `npm run start`
|
||||
|
||||
Starts the application in production mode.
|
||||
The application should be compiled with \`next build\` first.
|
||||
|
||||
See the section in Next docs about [deployment](https://github.com/zeit/next.js/wiki/Deployment) for more information.
|
||||
|
||||
## Using CSS
|
||||
|
||||
[`styled-jsx`](https://github.com/zeit/styled-jsx) is bundled with next to provide support for isolated scoped CSS. The aim is to support "shadow CSS" resembling of Web Components, which unfortunately [do not support server-rendering and are JS-only](https://github.com/w3c/webcomponents/issues/71).
|
||||
|
||||
```jsx
|
||||
export default () => (
|
||||
<div>
|
||||
Hello world
|
||||
<p>scoped!</p>
|
||||
<style jsx>{`
|
||||
p {
|
||||
color: blue;
|
||||
}
|
||||
div {
|
||||
background: red;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
div {
|
||||
background: blue;
|
||||
}
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
)
|
||||
```
|
||||
|
||||
Read more about [Next's CSS features](https://github.com/zeit/next.js#css).
|
||||
|
||||
## Adding Components
|
||||
|
||||
We recommend keeping React components in `./components` and they should look like:
|
||||
|
||||
### `./components/simple.js`
|
||||
|
||||
```jsx
|
||||
const Simple = () => <div>Simple Component</div>
|
||||
|
||||
export default Simple // don't forget to export default!
|
||||
```
|
||||
|
||||
### `./components/complex.js`
|
||||
|
||||
```jsx
|
||||
import { Component } from 'react'
|
||||
|
||||
class Complex extends Component {
|
||||
state = {
|
||||
text: 'World'
|
||||
}
|
||||
|
||||
render() {
|
||||
const { text } = this.state
|
||||
return <div>Hello {text}</div>
|
||||
}
|
||||
}
|
||||
|
||||
export default Complex // don't forget to export default!
|
||||
```
|
||||
|
||||
## Fetching Data
|
||||
|
||||
You can fetch data in `pages` components using `getInitialProps` like this:
|
||||
|
||||
### `./pages/stars.js`
|
||||
|
||||
```jsx
|
||||
const Page = props => <div>Next stars: {props.stars}</div>
|
||||
|
||||
Page.getInitialProps = async ({ req }) => {
|
||||
const res = await fetch('https://api.github.com/repos/zeit/next.js')
|
||||
const json = await res.json()
|
||||
const stars = json.stargazers_count
|
||||
return { stars }
|
||||
}
|
||||
|
||||
export default Page
|
||||
```
|
||||
|
||||
For the initial page load, `getInitialProps` will execute on the server only. `getInitialProps` will only be executed on the client when navigating to a different route via the `Link` component or using the routing APIs.
|
||||
|
||||
_Note: `getInitialProps` can **not** be used in children components. Only in `pages`._
|
||||
|
||||
Read more about [fetching data and the component lifecycle](https://github.com/zeit/next.js#fetching-data-and-component-lifecycle)
|
||||
|
||||
## Custom Server
|
||||
|
||||
Want to start a new app with a custom server? Run `create-next-app --example custom-server custom-app`
|
||||
|
||||
Typically you start your next server with `next start`. It's possible, however, to start a server 100% programmatically in order to customize routes, use route patterns, etc
|
||||
|
||||
This example makes `/a` resolve to `./pages/b`, and `/b` resolve to `./pages/a`:
|
||||
|
||||
```jsx
|
||||
const { createServer } = require('http')
|
||||
const { parse } = require('url')
|
||||
const next = require('next')
|
||||
|
||||
const dev = process.env.NODE_ENV !== 'production'
|
||||
const app = next({ dev })
|
||||
const handle = app.getRequestHandler()
|
||||
|
||||
app.prepare().then(() => {
|
||||
createServer((req, res) => {
|
||||
// Be sure to pass `true` as the second argument to `url.parse`.
|
||||
// This tells it to parse the query portion of the URL.
|
||||
const parsedUrl = parse(req.url, true)
|
||||
const { pathname, query } = parsedUrl
|
||||
|
||||
if (pathname === '/a') {
|
||||
app.render(req, res, '/b', query)
|
||||
} else if (pathname === '/b') {
|
||||
app.render(req, res, '/a', query)
|
||||
} else {
|
||||
handle(req, res, parsedUrl)
|
||||
}
|
||||
}).listen(3000, err => {
|
||||
if (err) throw err
|
||||
console.log('> Ready on http://localhost:3000')
|
||||
})
|
||||
})
|
||||
```
|
||||
|
||||
Then, change your `start` script to `NODE_ENV=production node server.js`.
|
||||
|
||||
Read more about [custom server and routing](https://github.com/zeit/next.js#custom-server-and-routing)
|
||||
|
||||
## Syntax Highlighting
|
||||
|
||||
To configure the syntax highlighting in your favorite text editor, head to the [relevant Babel documentation page](https://babeljs.io/docs/editors) and follow the instructions. Some of the most popular editors are covered.
|
||||
|
||||
## Deploy to Now
|
||||
|
||||
[now](https://zeit.co/now) offers a zero-configuration single-command deployment.
|
||||
|
||||
1. Install the `now` command-line tool either via the recommended [desktop tool](https://zeit.co/download) or via node with `npm install -g now`.
|
||||
|
||||
2. Run `now` from your project directory. You will see a **now.sh** URL in your output like this:
|
||||
|
||||
```
|
||||
> Ready! https://your-project-dirname-tpspyhtdtk.now.sh (copied to clipboard)
|
||||
```
|
||||
|
||||
Paste that URL into your browser when the build is complete, and you will see your deployed app.
|
||||
|
||||
You can find more details about [`now` here](https://zeit.co/now).
|
||||
|
||||
## Something Missing?
|
||||
|
||||
If you have ideas for how we could improve this readme or the project in general, [let us know](https://github.com/zeit/create-next-app/issues) or [contribute some!](https://github.com/zeit/create-next-app/edit/master/lib/templates/default/README.md)
|
|
@ -0,0 +1,44 @@
|
|||
import React from 'react'
|
||||
import NextHead from 'next/head'
|
||||
import { string } from 'prop-types'
|
||||
|
||||
const defaultDescription = ''
|
||||
const defaultOGURL = ''
|
||||
const defaultOGImage = ''
|
||||
|
||||
const Head = props => (
|
||||
<NextHead>
|
||||
<meta charSet='UTF-8' />
|
||||
<title>{props.title || ''}</title>
|
||||
<meta
|
||||
name='description'
|
||||
content={props.description || defaultDescription}
|
||||
/>
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<link rel='icon' sizes='192x192' href='/static/touch-icon.png' />
|
||||
<link rel='apple-touch-icon' href='/static/touch-icon.png' />
|
||||
<link rel='mask-icon' href='/static/favicon-mask.svg' color='#49B882' />
|
||||
<link rel='icon' href='/static/favicon.ico' />
|
||||
<meta property='og:url' content={props.url || defaultOGURL} />
|
||||
<meta property='og:title' content={props.title || ''} />
|
||||
<meta
|
||||
property='og:description'
|
||||
content={props.description || defaultDescription}
|
||||
/>
|
||||
<meta name='twitter:site' content={props.url || defaultOGURL} />
|
||||
<meta name='twitter:card' content='summary_large_image' />
|
||||
<meta name='twitter:image' content={props.ogImage || defaultOGImage} />
|
||||
<meta property='og:image' content={props.ogImage || defaultOGImage} />
|
||||
<meta property='og:image:width' content='1200' />
|
||||
<meta property='og:image:height' content='630' />
|
||||
</NextHead>
|
||||
)
|
||||
|
||||
Head.propTypes = {
|
||||
title: string,
|
||||
description: string,
|
||||
url: string,
|
||||
ogImage: string
|
||||
}
|
||||
|
||||
export default Head
|
|
@ -0,0 +1,59 @@
|
|||
import React from 'react'
|
||||
import Link from 'next/link'
|
||||
|
||||
const links = [
|
||||
{ href: 'https://github.com/zeit/create-next-app', label: 'GitHub' }
|
||||
].map(link => {
|
||||
link.key = `nav-link-${link.href}-${link.label}`
|
||||
return link
|
||||
})
|
||||
|
||||
const Nav = () => (
|
||||
<nav>
|
||||
<ul>
|
||||
<li>
|
||||
<Link prefetch href='/'>
|
||||
<a>Home</a>
|
||||
</Link>
|
||||
</li>
|
||||
<ul>
|
||||
{links.map(({ key, href, label }) => (
|
||||
<li key={key}>
|
||||
<Link href={href}>
|
||||
<a>{label}</a>
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<style jsx>{`
|
||||
:global(body) {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, Avenir Next, Avenir,
|
||||
Helvetica, sans-serif;
|
||||
}
|
||||
nav {
|
||||
text-align: center;
|
||||
}
|
||||
ul {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
nav > ul {
|
||||
padding: 4px 16px;
|
||||
}
|
||||
li {
|
||||
display: flex;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
a {
|
||||
color: #067df7;
|
||||
text-decoration: none;
|
||||
font-size: 13px;
|
||||
}
|
||||
`}</style>
|
||||
</nav>
|
||||
)
|
||||
|
||||
export default Nav
|
19
packages/create-next-app/lib/templates/default/gitignore
Normal file
19
packages/create-next-app/lib/templates/default/gitignore
Normal file
|
@ -0,0 +1,19 @@
|
|||
# See https://help.github.com/ignore-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# production
|
||||
/build
|
||||
/dist
|
||||
/.next
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
|
@ -0,0 +1,10 @@
|
|||
module.exports = {
|
||||
webpack: config => {
|
||||
// Fixes npm packages that depend on `fs` module
|
||||
config.node = {
|
||||
fs: 'empty'
|
||||
}
|
||||
|
||||
return config
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"name": "create-next-example-app",
|
||||
"scripts": {
|
||||
"dev": "next",
|
||||
"build": "next build",
|
||||
"start": "next start"
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
import React from 'react'
|
||||
import Link from 'next/link'
|
||||
import Head from '../components/head'
|
||||
import Nav from '../components/nav'
|
||||
|
||||
const Home = () => (
|
||||
<div>
|
||||
<Head title='Home' />
|
||||
<Nav />
|
||||
|
||||
<div className='hero'>
|
||||
<h1 className='title'>Welcome to Next!</h1>
|
||||
<p className='description'>
|
||||
To get started, edit <code>pages/index.js</code> and save to reload.
|
||||
</p>
|
||||
|
||||
<div className='row'>
|
||||
<Link href='https://github.com/zeit/next.js#getting-started'>
|
||||
<a className='card'>
|
||||
<h3>Getting Started →</h3>
|
||||
<p>Learn more about Next on GitHub and in their examples</p>
|
||||
</a>
|
||||
</Link>
|
||||
<Link href='https://open.segment.com/create-next-app'>
|
||||
<a className='card'>
|
||||
<h3>Examples →</h3>
|
||||
<p>
|
||||
Find other example boilerplates on the{' '}
|
||||
<code>create-next-app</code> site
|
||||
</p>
|
||||
</a>
|
||||
</Link>
|
||||
<Link href='https://github.com/zeit/create-next-app'>
|
||||
<a className='card'>
|
||||
<h3>Create Next App →</h3>
|
||||
<p>Was this tool helpful? Let us know how we can improve it</p>
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style jsx>{`
|
||||
.hero {
|
||||
width: 100%;
|
||||
color: #333;
|
||||
}
|
||||
.title {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
padding-top: 80px;
|
||||
line-height: 1.15;
|
||||
font-size: 48px;
|
||||
}
|
||||
.title,
|
||||
.description {
|
||||
text-align: center;
|
||||
}
|
||||
.row {
|
||||
max-width: 880px;
|
||||
margin: 80px auto 40px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.card {
|
||||
padding: 18px 18px 24px;
|
||||
width: 220px;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
color: #434343;
|
||||
border: 1px solid #9b9b9b;
|
||||
}
|
||||
.card:hover {
|
||||
border-color: #067df7;
|
||||
}
|
||||
.card h3 {
|
||||
margin: 0;
|
||||
color: #067df7;
|
||||
font-size: 18px;
|
||||
}
|
||||
.card p {
|
||||
margin: 0;
|
||||
padding: 12px 0 0;
|
||||
font-size: 13px;
|
||||
color: #333;
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
)
|
||||
|
||||
export default Home
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
40
packages/create-next-app/lib/utils/copy-dir.js
Normal file
40
packages/create-next-app/lib/utils/copy-dir.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
const path = require('path')
|
||||
const Promise = require('promise')
|
||||
const messages = require('../messages')
|
||||
const output = require('./output')
|
||||
const fs = require('fs-extra')
|
||||
|
||||
module.exports = function copyDir (opts) {
|
||||
const templatePath = opts.templatePath
|
||||
const projectPath = opts.projectPath
|
||||
const projectName = opts.projectName
|
||||
|
||||
console.log(messages.copying(projectName))
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
const stopCopySpinner = output.wait('Copying files')
|
||||
|
||||
fs.copy(templatePath, projectPath)
|
||||
.then(function () {
|
||||
return fs.move(
|
||||
path.resolve(projectPath, './gitignore'),
|
||||
path.resolve(projectPath, './.gitignore')
|
||||
)
|
||||
})
|
||||
.then(function () {
|
||||
stopCopySpinner()
|
||||
output.success(
|
||||
`Created files for "${output.cmd(projectName)}" next app`
|
||||
)
|
||||
return this
|
||||
})
|
||||
.then(resolve)
|
||||
.catch(function (err) {
|
||||
console.error(err)
|
||||
stopCopySpinner()
|
||||
output.error('Copy command failed, try again.')
|
||||
reject(err)
|
||||
process.exit(1)
|
||||
})
|
||||
})
|
||||
}
|
18
packages/create-next-app/lib/utils/get-install-cmd.js
Normal file
18
packages/create-next-app/lib/utils/get-install-cmd.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
const execa = require('execa')
|
||||
|
||||
let cmd
|
||||
|
||||
module.exports = function getInstallCmd () {
|
||||
if (cmd) {
|
||||
return cmd
|
||||
}
|
||||
|
||||
try {
|
||||
execa.shellSync('yarnpkg --version')
|
||||
cmd = 'yarn'
|
||||
} catch (e) {
|
||||
cmd = 'npm'
|
||||
}
|
||||
|
||||
return cmd
|
||||
}
|
52
packages/create-next-app/lib/utils/install.js
Normal file
52
packages/create-next-app/lib/utils/install.js
Normal file
|
@ -0,0 +1,52 @@
|
|||
const execa = require('execa')
|
||||
const Promise = require('promise')
|
||||
const messages = require('../messages')
|
||||
const getInstallCmd = require('./get-install-cmd')
|
||||
const output = require('./output')
|
||||
|
||||
module.exports = function install (opts) {
|
||||
const projectName = opts.projectName
|
||||
const projectPath = opts.projectPath
|
||||
const packages = opts.packages || []
|
||||
|
||||
if (packages.length === 0) {
|
||||
console.log('Missing packages in `install`, try running again.')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const installCmd = getInstallCmd()
|
||||
const installArgs = getInstallArgs(installCmd, packages)
|
||||
|
||||
console.log(messages.installing(packages))
|
||||
process.chdir(projectPath)
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
const stopInstallSpinner = output.wait('Installing modules')
|
||||
|
||||
execa(installCmd, installArgs)
|
||||
.then(function () {
|
||||
// Confirm that all dependencies were installed
|
||||
return execa(installCmd, ['install'])
|
||||
})
|
||||
.then(function () {
|
||||
stopInstallSpinner()
|
||||
output.success(`Installed dependencies for ${projectName}`)
|
||||
resolve()
|
||||
})
|
||||
.catch(function () {
|
||||
stopInstallSpinner()
|
||||
console.log(messages.installError(packages))
|
||||
return reject(new Error(`${installCmd} installation failed`))
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function getInstallArgs (cmd, packages) {
|
||||
if (cmd === 'npm') {
|
||||
const args = ['install', '--save', '--save-exact']
|
||||
return args.concat(packages, ['--verbose'])
|
||||
} else if (cmd === 'yarn') {
|
||||
const args = ['add']
|
||||
return args.concat(packages)
|
||||
}
|
||||
}
|
64
packages/create-next-app/lib/utils/load-example.js
Normal file
64
packages/create-next-app/lib/utils/load-example.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
const Promise = require('promise')
|
||||
const got = require('got')
|
||||
const mkdir = require('make-dir')
|
||||
const tar = require('tar')
|
||||
const Octokit = require('@octokit/rest')
|
||||
const output = require('./output')
|
||||
|
||||
// Ensure the given `example` name has a package.json file
|
||||
// A "not found" error will be returned if not
|
||||
const validateExampleName = example =>
|
||||
new Octokit().repos.getContent({
|
||||
owner: 'zeit',
|
||||
repo: 'next.js',
|
||||
path: `examples/${example}/package.json`
|
||||
})
|
||||
|
||||
// Stream and untar the archive, keeping only the requested example
|
||||
const fetchAndExtract = ({ projectName, example }) =>
|
||||
new Promise((resolve, reject) => {
|
||||
got
|
||||
.stream('https://codeload.github.com/zeit/next.js/tar.gz/canary')
|
||||
.on('error', reject)
|
||||
.pipe(
|
||||
tar.extract(
|
||||
{
|
||||
// Extract to the project name
|
||||
cwd: projectName,
|
||||
// Strip the first 3 dirs
|
||||
strip: 3
|
||||
},
|
||||
[
|
||||
// We only care about this dir
|
||||
`next.js-canary/examples/${example}`
|
||||
]
|
||||
)
|
||||
)
|
||||
.on('error', reject)
|
||||
.on('end', () => resolve())
|
||||
})
|
||||
|
||||
module.exports = function loadExample (opts) {
|
||||
const { projectName, example } = opts
|
||||
const stopExampleSpinner = output.wait(
|
||||
`Downloading files for ${output.cmd(example)} example`
|
||||
)
|
||||
return validateExampleName(example)
|
||||
.then(() => mkdir(projectName))
|
||||
.then(() => fetchAndExtract({ projectName, example }))
|
||||
.then(() => {
|
||||
stopExampleSpinner()
|
||||
output.success(
|
||||
`Downloaded ${output.cmd(example)} files for ${output.cmd(projectName)}`
|
||||
)
|
||||
})
|
||||
.catch(err => {
|
||||
stopExampleSpinner()
|
||||
output.error(
|
||||
`Error downloading ${output.cmd(example)} files for ${output.cmd(
|
||||
projectName
|
||||
)}`
|
||||
)
|
||||
throw err
|
||||
})
|
||||
}
|
83
packages/create-next-app/lib/utils/output.js
Normal file
83
packages/create-next-app/lib/utils/output.js
Normal file
|
@ -0,0 +1,83 @@
|
|||
const { eraseLine } = require('ansi-escapes')
|
||||
const chalk = require('chalk')
|
||||
const ora = require('ora')
|
||||
const ms = require('ms')
|
||||
const Promise = require('promise')
|
||||
|
||||
exports.info = function (msg) {
|
||||
console.log(`${chalk.gray('>')} ${msg}`)
|
||||
}
|
||||
|
||||
exports.error = function (msg) {
|
||||
if (msg instanceof Error) {
|
||||
msg = msg.message
|
||||
}
|
||||
|
||||
console.error(`${chalk.red('> Error!')} ${msg}`)
|
||||
}
|
||||
|
||||
exports.success = function (msg) {
|
||||
console.log(`${chalk.green('> Success!')} ${msg}`)
|
||||
}
|
||||
|
||||
exports.time = function () {
|
||||
const start = new Date()
|
||||
return chalk.gray(`[${ms(new Date() - start)}]`)
|
||||
}
|
||||
|
||||
exports.wait = function (msg) {
|
||||
const spinner = ora(chalk.green(msg))
|
||||
spinner.color = 'blue'
|
||||
spinner.start()
|
||||
|
||||
return function () {
|
||||
spinner.stop()
|
||||
process.stdout.write(eraseLine)
|
||||
}
|
||||
}
|
||||
|
||||
exports.prompt = function (opts) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
opts.forEach(function (val, i) {
|
||||
const text = val[1]
|
||||
console.log(`${chalk.gray('>')} [${chalk.bold(i + 1)}] ${text}`)
|
||||
})
|
||||
|
||||
const ondata = v => {
|
||||
const s = v.toString()
|
||||
|
||||
function cleanup () {
|
||||
process.stdin.setRawMode(false)
|
||||
process.stdin.removeListener('data', ondata)
|
||||
}
|
||||
|
||||
if (s === '\u0003') {
|
||||
cleanup()
|
||||
reject(new Error('Aborted'))
|
||||
return
|
||||
}
|
||||
|
||||
const n = Number(s)
|
||||
if (opts[n - 1]) {
|
||||
cleanup()
|
||||
resolve(opts[n - 1][0])
|
||||
}
|
||||
}
|
||||
|
||||
process.stdin.setRawMode(true)
|
||||
process.stdin.resume()
|
||||
process.stdin.on('data', ondata)
|
||||
})
|
||||
}
|
||||
|
||||
exports.cmd = function (cmd) {
|
||||
return chalk.bold(chalk.cyan(cmd))
|
||||
}
|
||||
|
||||
exports.code = function (cmd) {
|
||||
return `${chalk.gray('`')}${chalk.bold(cmd)}${chalk.gray('`')}`
|
||||
}
|
||||
|
||||
exports.param = function (param) {
|
||||
return chalk.bold(`${chalk.gray('{')}${chalk.bold(param)}${chalk.gray('}')}`)
|
||||
}
|
39
packages/create-next-app/package.json
Normal file
39
packages/create-next-app/package.json
Normal file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"name": "create-next-app",
|
||||
"description": "Create Next.js apps in one command",
|
||||
"version": "0.5.9",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"create-next-app": "./cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
},
|
||||
"repository": "zeit/next.js",
|
||||
"bugs": "https://github.com/zeit/next.js/issues",
|
||||
"homepage": "https://nextjs.org",
|
||||
"dependencies": {
|
||||
"@octokit/rest": "^15.9.4",
|
||||
"ansi-escapes": "^2.0.0",
|
||||
"chalk": "^1.1.3",
|
||||
"commander": "^2.9.0",
|
||||
"execa": "^0.6.3",
|
||||
"fs-extra": "^3.0.0",
|
||||
"got": "^8.3.1",
|
||||
"make-dir": "^1.3.0",
|
||||
"ms": "^1.0.0",
|
||||
"mz": "^2.6.0",
|
||||
"ora": "^1.2.0",
|
||||
"promise": "^7.1.1",
|
||||
"tar": "^4.4.4"
|
||||
},
|
||||
"keywords": [
|
||||
"next",
|
||||
"react",
|
||||
"next.js",
|
||||
"create-next-app",
|
||||
"create-react-app",
|
||||
"boilerplate"
|
||||
]
|
||||
}
|
77
test/integration/create-next-app/index.test.js
Normal file
77
test/integration/create-next-app/index.test.js
Normal file
|
@ -0,0 +1,77 @@
|
|||
/* eslint-env jest */
|
||||
import mkdirpModule from 'mkdirp'
|
||||
import path from 'path'
|
||||
import fs from 'fs'
|
||||
import execa from 'execa'
|
||||
import os from 'os'
|
||||
import { promisify } from 'util'
|
||||
|
||||
const mkdirp = promisify(mkdirpModule)
|
||||
|
||||
const cli = require.resolve('create-next-app/cli.js')
|
||||
const cwd = path.join(
|
||||
os.tmpdir(),
|
||||
Math.random()
|
||||
.toString(36)
|
||||
.substring(2)
|
||||
)
|
||||
|
||||
const run = (...args) => execa('node', [cli, ...args], { cwd })
|
||||
|
||||
describe('create next app', () => {
|
||||
beforeAll(async () => {
|
||||
jest.setTimeout(1000 * 30)
|
||||
await mkdirp(cwd)
|
||||
})
|
||||
|
||||
it('non-empty directory', async () => {
|
||||
const projectName = 'non-empty-directory'
|
||||
|
||||
await mkdirp(path.join(cwd, projectName))
|
||||
const pkg = path.join(cwd, projectName, 'package.json')
|
||||
fs.writeFileSync(pkg, '{ "foo": "bar" }')
|
||||
|
||||
expect.assertions(1)
|
||||
try {
|
||||
await run(projectName)
|
||||
} catch (e) {
|
||||
expect(e.stdout).toMatch(/there's already a directory called/)
|
||||
}
|
||||
})
|
||||
|
||||
it('empty directory', async () => {
|
||||
const projectName = 'empty-directory'
|
||||
const res = await run(projectName)
|
||||
|
||||
expect(res.exitCode).toBe(0)
|
||||
expect(
|
||||
fs.existsSync(path.join(cwd, projectName, 'package.json'))
|
||||
).toBeTruthy()
|
||||
expect(
|
||||
fs.existsSync(path.join(cwd, projectName, 'pages/index.js'))
|
||||
).toBeTruthy()
|
||||
})
|
||||
|
||||
it('invalid example name', async () => {
|
||||
const projectName = 'invalid-example-name'
|
||||
const res = await run(projectName, '--example', 'not a real example')
|
||||
// TODO: the exit code should be non-zero also
|
||||
expect(res.stderr.match(/error downloading/i)).toBeTruthy()
|
||||
expect(
|
||||
fs.existsSync(path.join(cwd, projectName, 'package.json'))
|
||||
).toBeFalsy()
|
||||
})
|
||||
|
||||
it('valid example', async () => {
|
||||
const projectName = 'valid-example'
|
||||
const res = await run(projectName, '--example', 'basic-css')
|
||||
expect(res.exitCode).toBe(0)
|
||||
|
||||
expect(
|
||||
fs.existsSync(path.join(cwd, projectName, 'package.json'))
|
||||
).toBeTruthy()
|
||||
expect(
|
||||
fs.existsSync(path.join(cwd, projectName, 'pages/index.js'))
|
||||
).toBeTruthy()
|
||||
})
|
||||
})
|
329
yarn.lock
329
yarn.lock
|
@ -1689,6 +1689,21 @@
|
|||
node-fetch "^2.1.1"
|
||||
url-template "^2.0.8"
|
||||
|
||||
"@octokit/rest@^15.9.4":
|
||||
version "15.18.1"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.1.tgz#ec7fb0f8775ef64dc095fae6635411d3fbff9b62"
|
||||
integrity sha512-g2tecjp2TEtYV8bKAFvfQtu+W29HM7ektmWmw8zrMy9/XCKDEYRErR2YvvhN9+IxkLC4O3lDqYP4b6WgsL6Utw==
|
||||
dependencies:
|
||||
before-after-hook "^1.1.0"
|
||||
btoa-lite "^1.0.0"
|
||||
debug "^3.1.0"
|
||||
http-proxy-agent "^2.1.0"
|
||||
https-proxy-agent "^2.2.0"
|
||||
lodash "^4.17.4"
|
||||
node-fetch "^2.1.1"
|
||||
universal-user-agent "^2.0.0"
|
||||
url-template "^2.0.8"
|
||||
|
||||
"@octokit/rest@^16.16.0":
|
||||
version "16.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.26.0.tgz#5c12b28763219045e1c9a15182e8dfaed10004e8"
|
||||
|
@ -1715,6 +1730,11 @@
|
|||
dependencies:
|
||||
any-observable "^0.3.0"
|
||||
|
||||
"@sindresorhus/is@^0.7.0":
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
|
||||
integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
|
||||
|
||||
"@taskr/clear@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@taskr/clear/-/clear-1.1.0.tgz#0a88d180bed2f91f310136375a72c00b50834fd1"
|
||||
|
@ -2379,6 +2399,11 @@ ansi-colors@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
|
||||
integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
|
||||
|
||||
ansi-escapes@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
|
||||
integrity sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=
|
||||
|
||||
ansi-escapes@^3.0.0, ansi-escapes@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
|
||||
|
@ -2421,6 +2446,11 @@ any-observable@^0.3.0:
|
|||
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
|
||||
integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
|
||||
|
||||
any-promise@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
|
||||
|
||||
anymatch@^1.3.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
|
||||
|
@ -3215,6 +3245,19 @@ cache-base@^1.0.1:
|
|||
union-value "^1.0.0"
|
||||
unset-value "^1.0.0"
|
||||
|
||||
cacheable-request@^2.1.1:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d"
|
||||
integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=
|
||||
dependencies:
|
||||
clone-response "1.0.2"
|
||||
get-stream "3.0.0"
|
||||
http-cache-semantics "3.8.1"
|
||||
keyv "3.0.0"
|
||||
lowercase-keys "1.0.0"
|
||||
normalize-url "2.0.1"
|
||||
responselike "1.0.2"
|
||||
|
||||
call-me-maybe@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
|
||||
|
@ -3559,7 +3602,7 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0:
|
|||
dependencies:
|
||||
restore-cursor "^2.0.0"
|
||||
|
||||
cli-spinners@^1.1.0:
|
||||
cli-spinners@^1.0.1, cli-spinners@^1.1.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a"
|
||||
integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==
|
||||
|
@ -3605,6 +3648,13 @@ clone-deep@^0.3.0:
|
|||
kind-of "^3.2.2"
|
||||
shallow-clone "^0.1.2"
|
||||
|
||||
clone-response@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
|
||||
integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
|
||||
dependencies:
|
||||
mimic-response "^1.0.0"
|
||||
|
||||
clone@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
|
||||
|
@ -4462,7 +4512,7 @@ decode-uri-component@^0.2.0:
|
|||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||
|
||||
decompress-response@^3.2.0:
|
||||
decompress-response@^3.2.0, decompress-response@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
|
||||
integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
|
||||
|
@ -5213,6 +5263,34 @@ exec-sh@^0.3.2:
|
|||
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b"
|
||||
integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==
|
||||
|
||||
execa@2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-2.0.3.tgz#4b84301b33042cfb622771e886ed0b10e5634642"
|
||||
integrity sha512-iM124nlyGSrXmuyZF1EMe83ESY2chIYVyDRZKgmcDynid2Q2v/+GuE7gNMl6Sy9Niwf4MC0DDxagOxeMPjuLsw==
|
||||
dependencies:
|
||||
cross-spawn "^6.0.5"
|
||||
get-stream "^5.0.0"
|
||||
is-stream "^2.0.0"
|
||||
merge-stream "^2.0.0"
|
||||
npm-run-path "^3.0.0"
|
||||
onetime "^5.1.0"
|
||||
p-finally "^2.0.0"
|
||||
signal-exit "^3.0.2"
|
||||
strip-final-newline "^2.0.0"
|
||||
|
||||
execa@^0.6.3:
|
||||
version "0.6.3"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.6.3.tgz#57b69a594f081759c69e5370f0d17b9cb11658fe"
|
||||
integrity sha1-V7aaWU8IF1nGnlNw8NF7nLEWWP4=
|
||||
dependencies:
|
||||
cross-spawn "^5.0.1"
|
||||
get-stream "^3.0.0"
|
||||
is-stream "^1.1.0"
|
||||
npm-run-path "^2.0.0"
|
||||
p-finally "^1.0.0"
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
|
||||
|
@ -5760,7 +5838,7 @@ fresh@0.5.2:
|
|||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
|
||||
|
||||
from2@^2.1.0:
|
||||
from2@^2.1.0, from2@^2.1.1:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
|
||||
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
|
||||
|
@ -5801,6 +5879,15 @@ fs-extra@7.0.1, fs-extra@^7.0.0:
|
|||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
|
||||
integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
jsonfile "^3.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-minipass@^1.2.5:
|
||||
version "1.2.6"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
|
||||
|
@ -5929,7 +6016,7 @@ get-stdin@^6.0.0:
|
|||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
|
||||
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
|
||||
|
||||
get-stream@^3.0.0:
|
||||
get-stream@3.0.0, get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
|
||||
|
@ -5941,6 +6028,13 @@ get-stream@^4.0.0, get-stream@^4.1.0:
|
|||
dependencies:
|
||||
pump "^3.0.0"
|
||||
|
||||
get-stream@^5.0.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
|
||||
integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==
|
||||
dependencies:
|
||||
pump "^3.0.0"
|
||||
|
||||
get-value@^2.0.3, get-value@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||
|
@ -6180,6 +6274,29 @@ got@^7.0.0:
|
|||
url-parse-lax "^1.0.0"
|
||||
url-to-options "^1.0.1"
|
||||
|
||||
got@^8.3.1:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937"
|
||||
integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==
|
||||
dependencies:
|
||||
"@sindresorhus/is" "^0.7.0"
|
||||
cacheable-request "^2.1.1"
|
||||
decompress-response "^3.3.0"
|
||||
duplexer3 "^0.1.4"
|
||||
get-stream "^3.0.0"
|
||||
into-stream "^3.1.0"
|
||||
is-retry-allowed "^1.1.0"
|
||||
isurl "^1.0.0-alpha5"
|
||||
lowercase-keys "^1.0.0"
|
||||
mimic-response "^1.0.0"
|
||||
p-cancelable "^0.4.0"
|
||||
p-timeout "^2.0.1"
|
||||
pify "^3.0.0"
|
||||
safe-buffer "^5.1.1"
|
||||
timed-out "^4.0.1"
|
||||
url-parse-lax "^3.0.0"
|
||||
url-to-options "^1.0.1"
|
||||
|
||||
graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
||||
version "4.1.15"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
||||
|
@ -6421,7 +6538,7 @@ htmlparser2@^3.9.1:
|
|||
inherits "^2.0.1"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
http-cache-semantics@^3.8.1:
|
||||
http-cache-semantics@3.8.1, http-cache-semantics@^3.8.1:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
|
||||
integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
|
||||
|
@ -6688,6 +6805,14 @@ inquirer@^6.2.0, inquirer@^6.2.2:
|
|||
strip-ansi "^5.1.0"
|
||||
through "^2.3.6"
|
||||
|
||||
into-stream@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6"
|
||||
integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=
|
||||
dependencies:
|
||||
from2 "^2.1.1"
|
||||
p-is-promise "^1.1.0"
|
||||
|
||||
invariant@^2.2.2, invariant@^2.2.4:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
|
||||
|
@ -7064,7 +7189,7 @@ is-resolvable@^1.0.0, is-resolvable@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
|
||||
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
|
||||
|
||||
is-retry-allowed@^1.0.0:
|
||||
is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
|
||||
integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=
|
||||
|
@ -7086,6 +7211,11 @@ is-stream@^1.0.0, is-stream@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
||||
|
||||
is-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
|
||||
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
|
||||
|
||||
is-svg@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
|
||||
|
@ -7690,6 +7820,11 @@ jsesc@~0.5.0:
|
|||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
||||
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
|
||||
|
||||
json-buffer@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
|
||||
integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
|
||||
|
||||
json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
|
||||
|
@ -7734,6 +7869,13 @@ json5@^2.1.0:
|
|||
dependencies:
|
||||
minimist "^1.2.0"
|
||||
|
||||
jsonfile@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
|
||||
integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonfile@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
|
||||
|
@ -7768,6 +7910,13 @@ jsx-ast-utils@^2.0.1:
|
|||
dependencies:
|
||||
array-includes "^3.0.3"
|
||||
|
||||
keyv@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373"
|
||||
integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==
|
||||
dependencies:
|
||||
json-buffer "3.0.0"
|
||||
|
||||
kind-of@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5"
|
||||
|
@ -8217,7 +8366,7 @@ log-symbols@^1.0.2:
|
|||
dependencies:
|
||||
chalk "^1.0.0"
|
||||
|
||||
log-symbols@^2.2.0:
|
||||
log-symbols@^2.1.0, log-symbols@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
|
||||
integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
|
||||
|
@ -8265,6 +8414,11 @@ lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2:
|
|||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
|
||||
|
||||
lowercase-keys@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
|
||||
integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=
|
||||
|
||||
lowercase-keys@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
|
||||
|
@ -8290,7 +8444,7 @@ macos-release@^2.2.0:
|
|||
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8"
|
||||
integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==
|
||||
|
||||
make-dir@^1.0.0:
|
||||
make-dir@^1.0.0, make-dir@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||
integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
|
||||
|
@ -8500,6 +8654,11 @@ merge-stream@^1.0.1:
|
|||
dependencies:
|
||||
readable-stream "^2.0.1"
|
||||
|
||||
merge-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
||||
|
||||
merge2@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
|
||||
|
@ -8593,7 +8752,7 @@ mimic-fn@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
|
||||
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
|
||||
|
||||
mimic-fn@^2.0.0:
|
||||
mimic-fn@^2.0.0, mimic-fn@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
@ -8651,7 +8810,7 @@ minipass@^2.2.1, minipass@^2.3.4, minipass@^2.3.5:
|
|||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.0"
|
||||
|
||||
minizlib@^1.1.1:
|
||||
minizlib@^1.1.1, minizlib@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
|
||||
integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
|
||||
|
@ -8739,6 +8898,11 @@ ms@2.1.1, ms@^2.0.0, ms@^2.1.1:
|
|||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
||||
|
||||
ms@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-1.0.0.tgz#59adcd22edc543f7b5381862d31387b1f4bc9473"
|
||||
integrity sha1-Wa3NIu3FQ/e1OBhi0xOHsfS8lHM=
|
||||
|
||||
multimatch@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
|
||||
|
@ -8759,6 +8923,15 @@ mute-stream@~0.0.4:
|
|||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||
|
||||
mz@^2.6.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nan@^2.12.1, nan@^2.13.2:
|
||||
version "2.14.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
|
||||
|
@ -9019,6 +9192,15 @@ normalize-path@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
||||
|
||||
normalize-url@2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6"
|
||||
integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==
|
||||
dependencies:
|
||||
prepend-http "^2.0.0"
|
||||
query-string "^5.0.1"
|
||||
sort-keys "^2.0.0"
|
||||
|
||||
normalize-url@^3.0.0, normalize-url@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
||||
|
@ -9096,6 +9278,13 @@ npm-run-path@^2.0.0:
|
|||
dependencies:
|
||||
path-key "^2.0.0"
|
||||
|
||||
npm-run-path@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5"
|
||||
integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==
|
||||
dependencies:
|
||||
path-key "^3.0.0"
|
||||
|
||||
npm-which@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
|
||||
|
@ -9257,6 +9446,13 @@ onetime@^2.0.0:
|
|||
dependencies:
|
||||
mimic-fn "^1.0.0"
|
||||
|
||||
onetime@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
|
||||
integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
|
||||
dependencies:
|
||||
mimic-fn "^2.1.0"
|
||||
|
||||
opener@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
|
||||
|
@ -9309,6 +9505,16 @@ ora@2.0.0:
|
|||
strip-ansi "^4.0.0"
|
||||
wcwidth "^1.0.1"
|
||||
|
||||
ora@^1.2.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5"
|
||||
integrity sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==
|
||||
dependencies:
|
||||
chalk "^2.1.0"
|
||||
cli-cursor "^2.1.0"
|
||||
cli-spinners "^1.0.1"
|
||||
log-symbols "^2.1.0"
|
||||
|
||||
os-browserify@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
||||
|
@ -9366,6 +9572,11 @@ p-cancelable@^0.3.0:
|
|||
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa"
|
||||
integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==
|
||||
|
||||
p-cancelable@^0.4.0:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0"
|
||||
integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==
|
||||
|
||||
p-defer@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
||||
|
@ -9383,6 +9594,16 @@ p-finally@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
|
||||
|
||||
p-finally@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561"
|
||||
integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==
|
||||
|
||||
p-is-promise@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
|
||||
integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
|
||||
|
||||
p-is-promise@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
|
||||
|
@ -9464,6 +9685,13 @@ p-timeout@^1.1.1:
|
|||
dependencies:
|
||||
p-finally "^1.0.0"
|
||||
|
||||
p-timeout@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038"
|
||||
integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==
|
||||
dependencies:
|
||||
p-finally "^1.0.0"
|
||||
|
||||
p-try@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
|
||||
|
@ -9713,6 +9941,11 @@ path-key@^2.0.0, path-key@^2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
||||
|
||||
path-key@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3"
|
||||
integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==
|
||||
|
||||
path-parse@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
||||
|
@ -10223,6 +10456,11 @@ prepend-http@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
||||
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
|
||||
|
||||
prepend-http@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
|
||||
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
|
||||
|
||||
preserve@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
|
||||
|
@ -10288,6 +10526,13 @@ promise@7.1.1:
|
|||
dependencies:
|
||||
asap "~2.0.3"
|
||||
|
||||
promise@^7.1.1:
|
||||
version "7.3.1"
|
||||
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
|
||||
integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
|
||||
dependencies:
|
||||
asap "~2.0.3"
|
||||
|
||||
prompts@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db"
|
||||
|
@ -10445,6 +10690,15 @@ qs@~6.5.1, qs@~6.5.2:
|
|||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
|
||||
query-string@^5.0.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
|
||||
integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==
|
||||
dependencies:
|
||||
decode-uri-component "^0.2.0"
|
||||
object-assign "^4.1.0"
|
||||
strict-uri-encode "^1.0.0"
|
||||
|
||||
querystring-es3@^0.2.0:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
|
||||
|
@ -11110,6 +11364,13 @@ resolve@1.11.0, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0,
|
|||
dependencies:
|
||||
path-parse "^1.0.6"
|
||||
|
||||
responselike@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
|
||||
integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
|
||||
dependencies:
|
||||
lowercase-keys "^1.0.0"
|
||||
|
||||
restore-cursor@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
|
||||
|
@ -11871,6 +12132,11 @@ stream-shift@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
|
||||
integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
|
||||
|
||||
strict-uri-encode@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
||||
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
|
||||
|
||||
string-argv@^0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
|
||||
|
@ -11986,6 +12252,11 @@ strip-eof@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
|
||||
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
|
||||
|
||||
strip-final-newline@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
||||
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
|
||||
|
||||
strip-indent@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
|
||||
|
@ -12198,6 +12469,19 @@ tar@^4, tar@^4.4.8:
|
|||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.2"
|
||||
|
||||
tar@^4.4.4:
|
||||
version "4.4.10"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
|
||||
integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
fs-minipass "^1.2.5"
|
||||
minipass "^2.3.5"
|
||||
minizlib "^1.2.1"
|
||||
mkdirp "^0.5.0"
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.3"
|
||||
|
||||
taskr@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/taskr/-/taskr-1.1.0.tgz#4f29d0ace26f4deae9a478eabf9aa0432e884438"
|
||||
|
@ -12302,6 +12586,20 @@ then-sleep@1.0.1:
|
|||
dependencies:
|
||||
native-or-bluebird "^1.2.0"
|
||||
|
||||
thenify-all@^1.0.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
|
||||
integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
|
||||
dependencies:
|
||||
thenify ">= 3.1.0 < 4"
|
||||
|
||||
"thenify@>= 3.1.0 < 4":
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
|
||||
integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
||||
throat@^4.0.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
|
||||
|
@ -12335,7 +12633,7 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3, t
|
|||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
||||
|
||||
timed-out@^4.0.0:
|
||||
timed-out@^4.0.0, timed-out@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
|
||||
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
|
||||
|
@ -12852,6 +13150,13 @@ url-parse-lax@^1.0.0:
|
|||
dependencies:
|
||||
prepend-http "^1.0.1"
|
||||
|
||||
url-parse-lax@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
|
||||
integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
|
||||
dependencies:
|
||||
prepend-http "^2.0.0"
|
||||
|
||||
url-template@^2.0.8:
|
||||
version "2.0.8"
|
||||
resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21"
|
||||
|
@ -13374,7 +13679,7 @@ yallist@^2.1.2:
|
|||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
||||
|
||||
yallist@^3.0.0, yallist@^3.0.2:
|
||||
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
|
||||
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
|
||||
|
|
Loading…
Reference in a new issue