Compare commits

..

37 Commits

Author SHA1 Message Date
Nathan Rajlich
2a9e5798a8 Publish Canary
- @now/build-utils@2.2.2-canary.2
 - now@18.0.1-canary.6
 - now-client@7.1.1-canary.0
 - @now/go@1.0.8-canary.0
 - @now/next@2.5.5-canary.1
 - @now/node@1.5.2-canary.3
 - @now/python@1.1.7-canary.0
 - @now/routing-utils@1.8.2-canary.2
 - @now/ruby@1.1.1-canary.0
 - @now/static-build@0.16.1-canary.1
2020-04-22 11:17:47 -07:00
Nguyễn Hồng Quân
5b369b385d [now-python] Fix: Relative imported module not seen in sys.modules (#4097)
After #4024 was merged, I tested and still got the same error. I searched around and found that the lines of code are in wrong order (ref: https://bugs.python.org/issue37521). So this is the proper fix.

Co-authored-by: Steven <steven@ceriously.com>
2020-04-22 10:07:42 -04:00
Steven
28e01528c5 [all] Rename ZEIT Now to Vercel (#4112)
https://vercel.com/blog/zeit-is-now-vercel

Co-authored-by: Nathan Rajlich <n@n8.io>
2020-04-21 19:11:12 -04:00
Nathan Rajlich
987ce6c26b [now-node] Fix dev server exit event handling (#4113)
Child process `exit` events have two arguments (`code` and `signal`)
so the `once.spread()` function needs to be used.
2020-04-21 14:31:56 -07:00
Leo Lamprecht
21e4d644cf [now-cli] Use vercel.com URL for inspecting deployments (#4111) 2020-04-21 14:12:15 -07:00
Nathan Rajlich
282127e3f9 [now-cli] Use npm instead of yarn for now dev Runtimes installation (#4107)
Stop downloading and caching `yarn` from GitHub Releases in `now dev`,
and instead simply rely on the user having `npm` installed. The user is
extremely likely to have `npm`, since Now CLI now requires `node` to be
installed (no longer using `pkg`) which comes with `npm` bundled by
default.
2020-04-21 19:20:32 +00:00
Nathan Rajlich
7748f50ca9 [now-cli] Clean up builder dev server shutdown logic (#4109)
DRY and removes the `pid` from the set immediately so there's no race
condition if the server is shut down shortly after an HTTP request
(like in the tests).
2020-04-21 15:25:50 +00:00
Steven
224757581d Publish Canary
- @now/build-utils@2.2.2-canary.1
2020-04-20 17:00:58 -04:00
Steven
40e99284c2 [now-build-utils] Prefer yarn over npm install when both detected (#4106)
Previously, when `package-lock.json` was detected, we would always use `npm install`.

This PR changes the behavior to the following:
- If only `package-lock.json` is detected, we use `npm install`.
- If both `package-lock.json` and `yarn.lock` are detected, use `yarn install`.

This will avoid npm bugs such as `npm ERR! Cannot read property 'match' of undefined`.
2020-04-20 20:54:09 +00:00
Steven
54bae977f0 Publish Canary
- @now/routing-utils@1.8.2-canary.1
2020-04-20 14:04:43 -04:00
Steven
867590a6ba [now-routing-utils] Fix validation for rewrite/redirect destination segments (#4105)
- Print an error instead of throwing when `destination` has segment not found in `source`
- Update docs to explain how to fix this error
- Add a couple tests
- Update uncaught `path-to-regexp` error message to print the full route that caused the error
2020-04-20 17:54:25 +00:00
Ana Trajkovska
c89cf6fd57 Publish Canary
- now@18.0.1-canary.5
 - @now/node@1.5.2-canary.2
2020-04-20 14:54:32 +02:00
Ana Trajkovska
b7ad18425f [now-cli] Implement pagination for listing secrets (#4084)
* Implement pagination for listing secrets

* Fix tests

* Improvements

* Fix removing a secret
2020-04-20 14:52:18 +02:00
Nathan Rajlich
5554b2d004 Publish Canary
- now@18.0.1-canary.4
2020-04-17 18:21:55 -07:00
Nathan Rajlich
e4ce0d6802 Publish Canary
- @now/node@1.5.2-canary.1
2020-04-17 18:16:17 -07:00
Nathan Rajlich
f477ee6e3b [now-node] Throw an error if "exit" event happens in dev server (#4095)
If the process exits before the "message" event is sent, then the dev
server crashed upon bootup. Often times caused by a missing dependency.
2020-04-18 01:15:43 +00:00
Nathan Rajlich
59b4029a0c [now-cli] Handle errors from startDevServer() in now dev (#4094) 2020-04-18 00:51:14 +00:00
Nathan Rajlich
8411b53fa3 [now-cli] Use entrypoint instead of src for startDevServer() (#4093)
Otherwise the `src` is modified to not have the file extension when used
with zero-config API routes.
2020-04-17 15:01:44 -07:00
Nathan Rajlich
7651bcf4a4 Publish Canary
- @now/build-utils@2.2.2-canary.0
 - now@18.0.1-canary.3
 - @now/next@2.5.5-canary.0
 - @now/node@1.5.2-canary.0
 - @now/static-build@0.16.1-canary.0
2020-04-17 13:59:52 -07:00
Nathan Rajlich
6fd1b50924 [now dev] Add support for proxying to builder-specific dev servers (#4089)
This is an extension to the Runtime API, where a runtime can optionally define a `startDevServer()` function which is responsible for spawning a single-serve dev server for an individual HTTP request (the dev server is booted up upon receiving an HTTP request, and gets shut down by `now dev` after the HTTP request is completed). For runtimes that define this function, the `build()` function will never be executed, which avoids a lot of unnecessary processing for a dev environment.

Some things this accomplishes:

 * Retains the proper stack trace for errors.
 * Ensures that if a source code file is changed, and then an HTTP request is sent, it's guaranteed to be using the latest code (no file watching, or re-compilations).
 * Avoids creating a Lambda zip file (just to immediately unpack it for dev).
 * Avoids `@zeit/fun` completely, which loses some "correctness" (i.e. function is not frozen in between requests).
 * Backwards compatible with older Now CLIs - versions that don't know about `startDevServer()` will just invoke `build()`, and there's no version change required in the Runtime.
2020-04-17 20:55:44 +00:00
Nathan Rajlich
a03b8689e9 [now dev] Remove "Installing dependencies..." message (#4090)
The `runNpmInstall()` function is already a no-op when invoked via `now dev` (#2926), however the "Installing" message was still being printed, leading to confusion about whether or not they actually are (they're not).
2020-04-17 02:49:33 +00:00
Andy
22c8ed15c7 [now-cli] Fix unhandled unauthorized error and improve getTeamById (#4082)
* [now-cli] Fix unhandled unauthorized error

* Make getTeamById more efficient

* Add cache

* Update packages/now-cli/src/util/get-team-by-id.ts

Co-Authored-By: Nathan Rajlich <n@n8.io>

* Update packages/now-cli/src/util/get-team-by-id.ts

Co-Authored-By: Nathan Rajlich <n@n8.io>

* Update packages/now-cli/src/util/get-team-by-id.ts

Co-Authored-By: Steven <steven@ceriously.com>

Co-authored-by: Nathan Rajlich <n@n8.io>
Co-authored-by: Steven <steven@ceriously.com>
2020-04-16 11:04:56 +02:00
Ana Trajkovska
e1f7b859b6 Publish Canary
- now@18.0.1-canary.2
 - @now/routing-utils@1.8.2-canary.0
2020-04-16 00:03:51 +02:00
Ana Trajkovska
c75cc99f1e [now-cli] Implement pagination for listing certs (#4075)
* Implement pagination for listing certs

* Remove --after option

* Fix tests
2020-04-16 00:02:46 +02:00
Steven
30ddd29889 [now-routing-utils] Fix error when hash contains question mark (#4080)
This PR fixes a [sentry error](https://sentry.io/organizations/zeithq/issues/1610773321/events/af1d6bee58c9413c81eb250ff0178917/) caused by route `destination` that contains a question mark in the hash.
2020-04-15 21:18:00 +00:00
JJ Kasper
21337de7cd Publish Stable
- @now/next@2.5.4
2020-04-15 15:57:17 -05:00
JJ Kasper
a6686f9ff5 Publish Canary
- now@18.0.1-canary.1
 - @now/next@2.5.4-canary.0
2020-04-15 15:52:16 -05:00
JJ Kasper
65c621bd55 [now-next] Fix static 404 not being used in mono-repo set-up (#4083)
This fixes the static 404 page not being used when deploying in a mono-repo structure. Before we weren't taking into account the `entryDirectory` where we needed to causing us to deploy `_error` when we didn't need to

x-ref: https://github.com/zeit/now/discussions/4077#discussioncomment-4625
2020-04-15 20:29:12 +00:00
Luc
0827d3514d [now-cli] Remove custom error when fetching frameworks fail (#4081)
Fix PRODUCT-2364.

Use `Client` instead of `node-fetch` to retrieve frameworks list.
2020-04-15 17:30:48 +00:00
Steven
7bc5d9fb5b Publish Canary
- now@18.0.1-canary.0
2020-04-15 12:30:24 -04:00
Steven
c53106ecee [now-cli] Fix for RangeError invalid count value (#4074)
This PR fixes a [sentry error](https://sentry.io/organizations/zeithq/issues/1611628097/events/75ed28bc6aef42868721a0912875fdbd/) where `repeat()` is passed a negative number and throws [`RangeError: invalid count value`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Resulting_string_too_large).

This PR ensures `repeat()` is always passed 0 or greater.
2020-04-15 15:22:30 +00:00
Andy
91e4d18ab8 [now-cli] Proxy everything except Lambdas to the dev server (#4079) 2020-04-15 16:29:59 +02:00
Steven
33cd78b93a [now-cli] Fix undefined teams and cache result (#4071)
- Fix [sentry error](https://sentry.io/organizations/zeithq/issues/1610513448/events/12bde04e921442a4aae8b7b10a759ecb/) where the `teams` might be undefined.
- Fix regression from #3740 which accidentally removed caching `teams`.
- Fix superflous `console.time()` calls for the same `GET /teams` API call. See below:

```sh
> [debug] [2020-04-14T18:31:00.220Z] GET https://api.zeit.co/www/user
> [debug] [2020-04-14T18:31:00.533Z] GET https://api.zeit.co/www/user : 313.078ms
> [debug] [2020-04-14T18:31:00.543Z] GET https://api.zeit.co/teams
> [debug] [2020-04-14T18:31:00.799Z] GET https://api.zeit.co/teams : 255.459ms
> [debug] #1 GET /teams: 260.198ms
```
2020-04-14 19:35:53 +00:00
Dávid Lévai
a765d27e5a [examples] Fix typo in Gatsby example (#4063)
Co-authored-by: Steven <steven@ceriously.com>
2020-04-14 15:06:18 -04:00
Steven
e65ff4bfd5 [examples] Fix ionic-react missing public directory (#4070)
The `public` directory was missing from the `ionic-react` example because we were ignoring all `public` directories.

This PR adds the public directory back (it is copied from now-static-build test fixtures). I also updated `.gitignore` and `.gitattributes` to be a little more friendly to our test fixtures so this doesn't happen again.
2020-04-14 16:31:49 +00:00
Steven
30a4787390 [now-cli] Fix encoding domain names (#4068)
Fixes [sentry error](https://sentry.io/organizations/zeithq/issues/1611174358/events/c3455f32ce1743b58cc248d548538b21/) so that domain name is always encoded because this input comes from the user.
2020-04-14 16:00:04 +00:00
Naoyuki Kanezawa
36f6f1db77 remove query and all options from log (#4066) 2020-04-15 00:31:57 +09:00
240 changed files with 16914 additions and 1108 deletions

3
.gitattributes vendored
View File

@@ -1,5 +1,8 @@
# Ignore test fixtures in GitHub Languages
# See https://github.com/github/linguist#vendored-code
examples/* linguist-vendored
utils/* linguist-vendored
test/* linguist-vendored
packages/*/test/* linguist-vendored
# Go build fails with Windows line endings.

View File

@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
### Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [abuse@zeit.co](mailto:abuse@zeit.co). All
reported by contacting the project team at [coc@vercel.com](mailto:coc@vercel.com). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.

View File

@@ -47,7 +47,7 @@ Unit tests are run locally with `jest` and execute quickly because they are test
### Integration tests
Integration tests create deployments to your ZEIT account using the `test` project name. After each test is deployed, the `probes` key is used to check if the response is the expected value. If the value doesn't match, you'll see a message explaining the difference. If the deployment failed to build, you'll see a more generic message like the following:
Integration tests create deployments to your Vercel account using the `test` project name. After each test is deployed, the `probes` key is used to check if the response is the expected value. If the value doesn't match, you'll see a message explaining the difference. If the deployment failed to build, you'll see a more generic message like the following:
```
[Error: Fetched page https://test-8ashcdlew.now.sh/root.js does not contain hello Root!. Instead it contains An error occurred with this application.
@@ -102,4 +102,4 @@ You can add support for a new Framework by creating a Pull Request for this repo
1. Add the Framework to the `@now/frameworks` package: The file is located in `packages/frameworks/frameworks.json`. You can copy the structure of an existing one and adjust the required fields. Note that the `settings` property either contains a `value` or a `placeholder`. The `value` property is used when something is not configurable, the `placeholder` is used when something is configurable and can be changed with configuration. An example would be the Output Directory for Hugo, it's `public` by default but can be changed through its config file, so we use `placeholder` with an explanation of what can be used.
2. Add an example to the `examples/` directory: The name of the directory should equal the slug of the framework used in `@now/frameworks`. The `.github/EXAMPLE_README_TEMPLATE.md` file can be used to create a `README.md` file for the example.
3. Update the `@now/static-build` package: The file `packages/now-static-build/src/frameworks.ts` has to be extended. You can add default routes that will always be applied to projects that use this Framework or specify some paths that will be cached to speed up the build process.
4. After your Pull Request has been merged and released, other users can select the example on the ZEIT Now dashboard and deploy it.
4. After your Pull Request has been merged and released, other users can select the example on the Vercel dashboard and deploy it.

View File

@@ -1,16 +1,16 @@
# [Name] Example
This directory is a brief example of a [Name](site-link) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Name](site-link) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own [Name] project with ZEIT Now.
Deploy your own [Name] project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now-examples/tree/master/example-directory)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now-examples/tree/master/example-directory)
### How We Created This Example
To get started with [Name] on Now, you can use the [CLI Tool Used](CLI-link) to initialize the project:
To get started with [Name] on Vercel, you can use the [CLI Tool Used](CLI-link) to initialize the project:
```shell
$ now init charge

View File

@@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Bug Report
url: https://zeit.co/support/request
about: Report a bug using the ZEIT Now support form
url: https://vercel.com/support/request
about: Report a bug using the Vercel support form
- name: Feature Request
url: https://github.com/zeit/now/discussions/new
about: Request a feature to be added to the platform

5
.gitignore vendored
View File

@@ -23,5 +23,6 @@ packages/now-cli/test/fixtures/integration
test/lib/deployment/failed-page.txt
.DS_Store
.next
.env
public
/.env
/public
__pycache__

View File

@@ -6,7 +6,7 @@ A Runtime is an npm module that exposes a `build` function and optionally an `an
Official Runtimes are published to [npmjs.com](https://npmjs.com) as a package and referenced in the `use` property of the `now.json` configuration file.
However, the `use` property will work with any [npm install argument](https://docs.npmjs.com/cli/install) such as a git repo url which is useful for testing your Runtime.
See the [Runtimes Documentation](https://zeit.co/docs/runtimes) to view example usage.
See the [Runtimes Documentation](https://vercel.com/docs/runtimes) to view example usage.
## Runtime Exports
@@ -18,7 +18,7 @@ The latest and suggested version is `3`.
### `analyze`
An **optional** exported function that returns a unique fingerprint used for the purpose of [build de-duplication](https://zeit.co/docs/v2/advanced/concepts/immutability#deduplication-algorithm). If the `analyze` function is not supplied, a random fingerprint is assigned to each build.
An **optional** exported function that returns a unique fingerprint used for the purpose of [build de-duplication](https://vercel.com/docs/v2/platform/deployments#deduplication). If the `analyze` function is not supplied, a random fingerprint is assigned to each build.
```js
export analyze({
@@ -43,7 +43,7 @@ export analyze(options: AnalyzeOptions) {
A **required** exported function that returns a [Serverless Function](#serverless-function).
What's a Serverless Function? Read about [Serverless Function concepts](https://zeit.co/docs/v2/deployments/concepts/lambdas) to learn more.
What's a Serverless Function? Read about [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction) to learn more.
```js
build({
@@ -109,7 +109,7 @@ export prepareCache(options: PrepareCacheOptions) {
### `shouldServe`
An **optional** exported function that is only used by `now dev` in [Now CLI](https:///download) and indicates whether a [Runtime](https://zeit.co/docs/v2/advanced/runtimes) wants to be responsible for building a certain request path.
An **optional** exported function that is only used by `now dev` in [Now CLI](https:///download) and indicates whether a [Runtime](https://vercel.com/docs/runtimes) wants to be responsible for building a certain request path.
```js
shouldServe({
@@ -153,7 +153,7 @@ Check out our [Node.js Runtime](https://github.com/zeit/now/tree/master/packages
### Execution Context
A [Serverless Function](https://zeit.co/docs/v2/advanced/concepts/lambdas) is created where the Runtime logic is executed. The lambda is run using the Node.js 8 runtime. A brand new sandbox is created for each deployment, for security reasons. The sandbox is cleaned up between executions to ensure no lingering temporary files are shared from build to build.
A [Serverless Function](https://vercel.com/docs/v2/serverless-functions/introduction) is created where the Runtime logic is executed. The lambda is run using the Node.js 8 runtime. A brand new sandbox is created for each deployment, for security reasons. The sandbox is cleaned up between executions to ensure no lingering temporary files are shared from build to build.
All the APIs you export ([`analyze`](#analyze), [`build`](#build) and [`prepareCache`](#preparecache)) are not guaranteed to be run in the same process, but the filesystem we expose (e.g.: `workPath` and the results of calling [`getWriteableDirectory`](#getWriteableDirectory) ) is retained.
@@ -165,8 +165,6 @@ When a new build is created, we pre-populate the `workPath` supplied to `analyze
The `analyze` step can modify that directory, and it will not be re-created when it's supplied to `build` and `prepareCache`.
To learn how the cache key is computed and invalidated, refer to the [overview](https://zeit.co/docs/v2/advanced/runtimes#technical-details).
### Accessing Environment and Secrets
The env and secrets specified by the user as `build.env` are passed to the Runtime process. This means you can access user env via `process.env` in Node.js.

View File

@@ -5,11 +5,11 @@
## Usage
Get started by [Importing a Git Project](https://zeit.co/import) and use `git push` to deploy. Alternatively, you can [install Now CLI](https://zeit.co/download).
Get started by [Importing a Git Project](https://vercel.com/import) and use `git push` to deploy. Alternatively, you can [install Now CLI](https://vercel.com/download).
## Documentation
For details on how to use ZEIT Now, check out our [documentation](https://zeit.co/docs).
For details on how to use Vercel, check out our [documentation](https://vercel.com/docs).
## Caught a Bug?

View File

@@ -8,7 +8,7 @@ the provider couldnt solve the requested challenges.
## How to Fix It
If your domain is pointing to ZEIT World DNS and youre getting this error,
If your domain is pointing to Vercel DNS and youre getting this error,
it could be that:
- The domain was acquired recently, and it might not be ready for use yet.
@@ -17,11 +17,11 @@ it could be that:
When running into this, ensure that your nameservers are configured correctly. Also, if you bought the domain recently or have made changes, please be patient,
it might take a while for these to be ready.
If your domain is _not_ pointing to ZEIT World DNS and youre getting this
If your domain is _not_ pointing to Vercel DNS and youre getting this
error, the following methods could help:
- When solving challenges *manually*, ensure that the TXT
records required to solve the challenges exist and are propagated. You can do so by querying the nameservers with `nslookup -q=TXT _acme-challenge.domain.com` depending on the Common Names you want for your certificate.
- When solving challenges _manually_, ensure that the TXT
records required to solve the challenges exist and are propagated. You can do so by querying the nameservers with `nslookup -q=TXT _acme-challenge.domain.com` depending on the Common Names you want for your certificate.
- If you are not solving the challenges manually you must ensure that you have an
`ALIAS` and `CNAME` records in place. Ensure also that you have disabled automatic redirects to `https` and ensure all changes were propagated.
`ALIAS` and `CNAME` records in place. Ensure also that you have disabled automatic redirects to `https` and ensure all changes were propagated.

View File

@@ -4,12 +4,12 @@
When generating a certificate, we have to prove ownership over the domain
for the Certificate Authority (CA) that issues it. We also run some pretests
to make sure the DNS is properly configured before submitting the request to
to make sure the DNS is properly configured before submitting the request to
the CA. This error means that these pretests did not succeed.
## How to Fix It
If your domain is pointing to ZEIT World DNS and youre getting this error,
If your domain is pointing to Vercel DNS and youre getting this error,
it could be that:
- The domain was acquired recently, and it might not be ready for use yet.
@@ -18,6 +18,6 @@ it could be that:
When running into this, ensure that your nameservers have configuration is correct. Also, if you bought the domain recently or have made changes, please be patient,
it might take a while for these to be ready.
If your domain is _not_ pointing to ZEIT World DNS and youre getting this
If your domain is _not_ pointing to Vercel DNS and youre getting this
error, you must ensure that you have an `ALIAS` and `CNAME` records in place.
Ensure also that you have disabled automatic redirects to `https` and ensure all changes were propagated.

View File

@@ -12,10 +12,10 @@ You can retrieve both the intended nameservers and TXT verification record for t
When you have added either verification method to your domain, you can run `now domains verify <domain>` again to complete verification for your domain.
ZEIT will also automatically check periodically that your domain has been verified and automatically mark it as such if we detect either verification method on the domain.
Vercel will also automatically check periodically that your domain has been verified and automatically mark it as such if we detect either verification method on the domain.
If you would not like to verify your domain, you can remove it from your account using `now domains rm <domain>`.
#### Resources
- [ZEIT Domains Documentation](https://zeit.co/docs/v2/domains-and-aliases/adding-a-domain/)
- [Zero-Downtime Domain Migration Guide](https://zeit.co/docs/v2/domains-and-aliases/zero-downtime-domain-migration/)
- [Vercel Custom Domains Documentation](https://vercel.com/docs/v2/custom-domains)

View File

@@ -13,7 +13,7 @@ Wrap the `RegExp` part of your `source` as an un-named parameter.
```js
{
source: '/feedback/(?!general)',
destination: '/feedback/general'
destination: '/api/feedback/general'
}
```
@@ -22,7 +22,27 @@ Wrap the `RegExp` part of your `source` as an un-named parameter.
```js
{
source: '/feedback/((?!general).*)',
destination: '/feedback/general'
destination: '/api/feedback/general'
}
```
Ensure any segments used in the `destination` property are also used in the `source` property.
**Before**
```js
{
source: '/feedback/:type',
destination: '/api/feedback/:id'
}
```
**After**
```js
{
source: '/feedback/:id',
destination: '/api/feedback/:id'
}
```

View File

@@ -8,4 +8,4 @@ The `--token` flag was specified, but its contents are invalid.
The `--token` flag must only contain numbers (0-9) and letters from the alphabet (a-z and A-Z). This needs to be the token of the user account as which you'd like to act.
You can either get the token from the `./now/auth.json` file located in your user directory or [from the dashboard](https://zeit.co/account/tokens).
You can either get the token from the `./now/auth.json` file located in your user directory or [from the dashboard](https://vercel.com/account/tokens).

View File

@@ -1,7 +1,8 @@
# Missing Environment Variables While Developing
#### Why This Error Occurred
You ran `now dev` inside a project that contains a `now.json` file with `env` or `build.env` properties that use [Now Secrets](https://zeit.co/docs/v2/deployments/environment-variables-and-secrets).
You ran `now dev` inside a project that contains a `now.json` file with `env` or `build.env` properties that use [Now Secrets](https://vercel.com/docs/v2/build-step#environment-variables).
In order to use environment variables in your project locally that have values defined using the Now Secrets format (e.g. `@my-secret-value`), you will need to provide the value as an environment variable using a `.env` or `.env.build` file.
@@ -23,4 +24,4 @@ TEST=value
In the above example, `TEST` represents the name of the environment variable and `value` its value.
For more information on Environment Variables in development, [see the documentation](https://zeit.co/docs/v2/development/environment-variables/).
For more information on Environment Variables in development, [see the documentation](https://vercel.com/docs/v2/build-step#environment-variables).

View File

@@ -8,4 +8,4 @@ The `--scope` flag was specified, but there's no value for it available.
In order to make it work, you need to specify a value for the `--scope` flag. This needs to be the slug or ID of the team as which you'd like to act or the username or ID of a user you'd like to act as.
As an example, if your team URL is `https://zeit.co/teams/zeit`, you would set `--scope` to `zeit`.
As an example, if your team URL is `https://vercel.com/teams/zeit`, you would set `--scope` to `zeit`.

View File

@@ -8,4 +8,4 @@ The `--token` flag was specified, but there's no value for it available.
In order to make it work, you need to specify a value for the `--token` flag. This needs to be the token of the user account as which you'd like to act.
You can either get the token from the `./now/auth.json` file located in your user directory or [from the dashboard](https://zeit.co/account/tokens).
You can either get the token from the `./now/auth.json` file located in your user directory or [from the dashboard](https://vercel.com/account/tokens).

View File

@@ -6,5 +6,5 @@ You're running Now CLI in a non-terminal context and there are no credentials av
#### Possible Ways to Fix It
- Specify a value for the `--token` flag (this needs to be the token of the user account as which you'd like to act). You can either get the token from the `./now/auth.json` file located in your user directory or [from the dashboard](https://zeit.co/account/tokens).
- Specify a value for the `--token` flag (this needs to be the token of the user account as which you'd like to act). You can either get the token from the `./now/auth.json` file located in your user directory or [from the dashboard](https://vercel.com/account/tokens).
- Ensure that both `~/now/auth.json` and `~/now/config.json` exist

View File

@@ -8,4 +8,4 @@ In turn, they would have to take the value of the `--token` flag into considerat
#### Possible Ways to Fix It
Specify a value for the `--scope` flag. This needs to be the slug or ID of the team as which you'd like to act (as an example, if your team URL is `https://zeit.co/teams/zeit`, the value can be `zeit`) or the username or ID of a user you'd like to act as.
Specify a value for the `--scope` flag. This needs to be the slug or ID of the team as which you'd like to act (as an example, if your team URL is `https://vercel.com/teams/zeit`, the value can be `zeit`) or the username or ID of a user you'd like to act as.

View File

@@ -27,7 +27,7 @@ Serverless:
- Runs `npm run now-build`
- Does not run `npm install --production` as the output from the build is all that's needed to bundle lambdas.
- No runtime dependencies, meaning smaller lambda functions
- Optimized for fast [cold start](https://zeit.co/blog/serverless-ssr#cold-start)
- Optimized for fast [cold start](https://vercel.com/blog/serverless-ssr#cold-start)
#### Possible Ways to Fix It

View File

@@ -19,7 +19,7 @@ the provided `$PORT` that the builder expects the server to bind to.
For example, if you are using Gatsby, your `now-dev` script must use the `-p`
(port) option to bind to the `$PORT` specified from the builder:
> *In Windows environments, reference the `PORT` environment variable with `%PORT%`*
> _In Windows environments, reference the `PORT` environment variable with `%PORT%`_
```
{
@@ -34,7 +34,3 @@ For example, if you are using Gatsby, your `now-dev` script must use the `-p`
Consult your static builder program's `--help` or documentation to figure out what
the command line flag to bind to a specific port is (in many cases, it is one of:
`-p` / `-P` / `--port`).
### Useful Links
- [`@now/static-build` Local Development Documentation](https://zeit.co/docs/v2/deployments/official-builders/static-build-now-static-build#local-development)

View File

@@ -9,4 +9,4 @@ You tried to use `now scale` on a path alias (`now alias -r rules.json`).
Path aliases are routes to instances. Instances can be scaled independent from each other.
You can view path aliases by running `now alias ls <id>`.
Documentation for Path Aliases can be found [here](https://zeit.co/docs/features/path-aliases).
Documentation for Path Aliases can be found [here](https://vercel.com/docs/features/path-aliases).

View File

@@ -3,18 +3,18 @@
## Why This Error Occurred
When generating a certificate, we have to prove ownership over the domain
for the Certificate Authority (CA) that issues it. In the case of Wildcard Certificates,
the requested challenge consists of adding TXT DNS records so, when the domain does not
point to ZEIT World DNS, we cannot create the records to solve the challenge.
for the Certificate Authority (CA) that issues it. In the case of Wildcard Certificates,
the requested challenge consists of adding TXT DNS records so, when the domain does not
point to Vercel DNS, we cannot create the records to solve the challenge.
## How to Fix It
To generate a certificate solving challenges manually, you must add the given `TXT` records with
the appropriate name to your DNS. Then, after verifying that the CA can read the records,
the appropriate name to your DNS. Then, after verifying that the CA can read the records,
you can rerun the issuance command.
In case you want to start issuing a certificate to get the records you have to add or to
In case you want to start issuing a certificate to get the records you have to add or to
get those records again in the console, You can run the issuance command including the
`--challenge-only` option. This way the CLI will output the challenges information and,
after adding those records, you can rerun the command without `--challenge-only` to finish
after adding those records, you can rerun the command without `--challenge-only` to finish
issuance.

View File

@@ -13,7 +13,7 @@ but it couldn't do so within the allotted time (defaults to 2 minutes).
Instance verification is the process of ensuring that after
your deployment is ready, we can actually run (instantiate) your code.
If you configured [regions or scale](https://zeit.co/docs/features/scaling),
If you configured [regions or scale](https://vercel.com/docs/features/scaling),
we ensure the minimums and maximums are met for the regions you enabled.
If you think your code is taking too long to instantiate, this can be due

18
examples/README.md vendored
View File

@@ -1,18 +1,18 @@
# ZEIT Now Examples
# Vercel Examples
This is the public list of examples for **ZEIT Now**.
This is the public list of examples for **Vercel**.
All of these ready to deploy examples feature a frontend framework or static site, created with zero configuration using the CLI tools they provide.
The `+functions` examples feature an `/api` directory as well, highlighting how to use serverless functions on top of a framework, again with zero configuration required.
## What is ZEIT Now?
## What is Vercel?
ZEIT Now is a cloud platform for static frontends and serverless functions. It enables developers to host websites and web applications that deploy instantly, scale automatically, and require no supervision.
Vercel is a cloud platform for static frontends and serverless functions. It enables developers to host websites and web applications that deploy instantly, scale automatically, and require no supervision.
## What Does this Repository Contain?
This repository consists of multiple examples, created for use with the [ZEIT Now](https://zeit.co/now) platform. In addition to this, it also contains:
This repository consists of multiple examples, created for use with the [Vercel](https://vercel.com) platform. In addition to this, it also contains:
- [Code of Conduct](https://github.com/zeit/now/blob/master/.github/CODE_OF_CONDUCT.md) - our Code of Conduct, adapted from the [Contributor Covenant](http://contributor-covenant.org)
- [Contributing Guidelines](https://github.com/zeit/now/blob/master/.github/CONTRIBUTING.md) - a guide on how to contribute to the Now Examples repository
@@ -22,7 +22,7 @@ We recommend familiarizing yourself with the above sections, particularly if you
## Deploying Examples
To get started using any of these examples as your own project, [install Now](https://zeit.co/download) and use either of the following commands in your terminal:
To get started using any of these examples as your own project, [install Now](https://vercel.com/download) and use either of the following commands in your terminal:
```sh
now init # Pick an example in the CLI
@@ -54,9 +54,9 @@ For example, the previous `nodejs` example showed a static frontend with a Node.
## Migrating and Upgrading
If you have an existing project you would like to deploy with ZEIT Now, we recommend reading our guide on [migrating to Now and zero configuration](https://zeit.co/guides/migrate-to-zeit-now/). By combining the guide with this repository, you will quickly be able to understand how to deploy your application.
If you have an existing project you would like to deploy with Vercel, we recommend reading our guide on [migrating to Vercel and zero configuration](https://vercel.com/guides/migrate-to-vercel). By combining the guide with this repository, you will quickly be able to understand how to deploy your application.
If you would like to upgrade a project to take advantage of zero configuration, you may find the [upgrade guide](https://zeit.co/guides/upgrade-to-zero-configuration/) useful. The upgrade guide covers how to remove configuration from existing projects along with how to use the `/api` directory.
If you would like to upgrade a project to take advantage of zero configuration, you may find the [upgrade guide](https://vercel.com/guides/upgrade-to-zero-configuration) useful. The upgrade guide covers how to remove configuration from existing projects along with how to use the `/api` directory.
## How to Contribute
@@ -80,6 +80,6 @@ Now Examples is an open source project released under the [MIT License](https://
## Get In Touch
If you have any questions that are not covered by raising an issue then please get in touch with us on [GitHub Discussions](https://github.com/zeit/now/discussions). There you will find both members of the community and staff who are happy to help answer questions on anything ZEIT related.
If you have any questions that are not covered by raising an issue then please get in touch with us on [GitHub Discussions](https://github.com/zeit/now/discussions). There you will find both members of the community and staff who are happy to help answer questions on anything Vercel related.
[![Join the community on GitHub Discussions](https://badgen.net/badge/join%20the%20discussion/on%20github/black?icon=github)](https://github.com/zeit/now/discussions)

View File

@@ -1,18 +1,18 @@
# AMP Example
This directory is a brief example of an [AMP](https://amp.dev/) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of an [AMP](https://amp.dev/) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own AMP project with ZEIT Now.
Deploy your own AMP project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/amp)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/amp)
_Live Example: https://amp.now-examples.now.sh_
### How We Created This Example
To get started deploying AMP with ZEIT Now, you can use the [Now CLI](https://zeit.co/download) to initialize the project:
To get started deploying AMP with Vercel, you can use the [Now CLI](https://vercel.com/download) to initialize the project:
```shell
$ now init amp

View File

@@ -2,13 +2,13 @@
# Angular Example
This directory is a brief example of an [Angular](https://angular.io/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of an [Angular](https://angular.io/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Angular project with ZEIT Now.
Deploy your own Angular project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/angular)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/angular)
_Live Example: https://angular.now-examples.now.sh_
@@ -22,7 +22,7 @@ $ ng new
### Deploying From Your Terminal
You can deploy your new Angular project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Angular project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -1,18 +1,18 @@
# Brunch Example
This directory is a brief example of a [Brunch](https://brunch.io/) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Brunch](https://brunch.io/) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Brunch project with ZEIT Now.
Deploy your own Brunch project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/brunch)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/brunch)
_Live Example: https://brunch.now-examples.now.sh_
### How We Created This Example
To get started deploying Brunch with ZEIT Now, you can use the [Brunch CLI](https://brunch.io/docs/commands) to initialize the project:
To get started deploying Brunch with Vercel, you can use the [Brunch CLI](https://brunch.io/docs/commands) to initialize the project:
```shell
$ brunch new project-name -s es6
@@ -20,7 +20,7 @@ $ brunch new project-name -s es6
### Deploying From Your Terminal
You can deploy your new Brunch project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Brunch project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -12,6 +12,6 @@
<div class="brunch">
<img src="/brunch-napkin.svg" alt="Brunch">
<h4>Bon Appétit.</h4>
<h6>A <a href="http://brunch.io" target="_blank">Brunch</a> website deployed on <a href="https://zeit.co" target="_blank">ZEIT Now</a></h6>
<h6>A <a href="http://brunch.io" target="_blank">Brunch</a> website deployed on <a href="https://vercel.com" target="_blank">Vercel</a></h6>
</div>
</body>

View File

@@ -2,19 +2,19 @@
# React Example
This directory is a brief example of a [React](https://reactjs.org/) app with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction) that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [React](https://reactjs.org/) app with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction) that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own React project, along with Serverless Functions, with ZEIT Now.
Deploy your own React project, along with Serverless Functions, with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/create-react-app-functions)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/create-react-app-functions)
_Live Example: https://create-react-app.now-examples.now.sh/_
### How We Created This Example
To get started with React, along with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction), with ZEIT Now, you can use the [Create-React-App CLI](https://reactjs.org/docs/create-a-new-react-app.html#create-react-app) to initialize the project:
To get started with React, along with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction), with Vercel, you can use the [Create-React-App CLI](https://reactjs.org/docs/create-a-new-react-app.html#create-react-app) to initialize the project:
```shell
$ npx create-react-app my-app
@@ -22,7 +22,7 @@ $ npx create-react-app my-app
### Deploying From Your Terminal
You can deploy your new React project, along with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction), with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new React project, along with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction), with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -18,11 +18,11 @@ function App() {
<h2>
Deployed with{' '}
<a
href="https://zeit.co/docs"
href="https://vercel.com/docs"
target="_blank"
rel="noreferrer noopener"
>
ZEIT Now
Vercel
</a>
!
</h2>

View File

@@ -1,18 +1,18 @@
# Custom Build Example
This directory is a brief example of using a Custom Build script that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of using a Custom Build script that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Custom Built project with ZEIT Now.
Deploy your own Custom Built project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/custom-build)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/custom-build)
_Live Example: https://custom-build.now-examples.now.sh_
### How We Created This Example
To get started deploying a Custom Built project with ZEIT Now, you can use the [Now CLI](https://zeit.co/download) to initialize the project:
To get started deploying a Custom Built project with Vercel, you can use the [Now CLI](https://vercel.com/download) to initialize the project:
```shell
$ now init custom-build
@@ -20,7 +20,7 @@ $ now init custom-build
### Deploying From Your Terminal
You can deploy your new Custom Built project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Custom Built project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -2,19 +2,19 @@
# Docusaurus Example
This directory is a brief example of a [Docusaurus](https://docusaurus.io/) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Docusaurus](https://docusaurus.io/) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Docusaurus project with ZEIT Now.
Deploy your own Docusaurus project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/docusaurus)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/docusaurus)
_Live Example: https://docusaurus.now-examples.now.sh_
### How We Created This Example
To get started with Docusaurus for deployment with ZEIT Now, you can use the [Docusaurus CLI](https://docusaurus.io/docs/en/installation) to initialize the project:
To get started with Docusaurus for deployment with Vercel, you can use the [Docusaurus CLI](https://docusaurus.io/docs/en/installation) to initialize the project:
```shell
$ docusaurus-init
@@ -22,7 +22,7 @@ $ docusaurus-init
### Deploying From Your Terminal
You can deploy your new Docusaurus project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Docusaurus project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -1,16 +1,16 @@
# Dojo Example
This directory is a brief example of a [Dojo](https://dojo.io) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Dojo](https://dojo.io) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Dojo project with ZEIT Now.
Deploy your own Dojo project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now-examples/tree/master/dojo)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now-examples/tree/master/dojo)
### How We Created This Example
To get started with Dojo on Now, you can use the [Dojo CLI](https://github.com/dojo/cli) to initialize the project:
To get started with Dojo on Vercel, you can use the [Dojo CLI](https://github.com/dojo/cli) to initialize the project:
```shell
$ now init dojo

View File

@@ -2,19 +2,19 @@
# Eleventy Example
This directory is a brief example of a [Eleventy](https://www.11ty.io/) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Eleventy](https://www.11ty.io/) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Eleventy project with ZEIT Now.
Deploy your own Eleventy project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/eleventy)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/eleventy)
_Live Example: https://eleventy.now-examples.now.sh_
### How We Created This Example
To get started with Eleventy for deployment with ZEIT Now, you can use [npx](https://www.npmjs.com/package/npx) to initialize the project:
To get started with Eleventy for deployment with Vercel, you can use [npx](https://www.npmjs.com/package/npx) to initialize the project:
```shell
$ npx degit 11ty/eleventy-base-blog my-11ty-project
@@ -22,7 +22,7 @@ $ npx degit 11ty/eleventy-base-blog my-11ty-project
### Deploying From Your Terminal
You can deploy your new Eleventy project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Eleventy project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -2,19 +2,19 @@
# Ember Example
This directory is a brief example of an [Ember](https://emberjs.com/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of an [Ember](https://emberjs.com/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Ember project with ZEIT Now.
Deploy your own Ember project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/ember)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/ember)
_Live Example: https://ember.now-examples.now.sh_
### How We Created This Example
To get started with Ember for deployment with ZEIT Now, you can use the [Ember CLI](https://ember-cli.com/) to initialize the project:
To get started with Ember for deployment with Vercel, you can use the [Ember CLI](https://ember-cli.com/) to initialize the project:
```shell
$ npx ember-cli new ember-project
@@ -22,7 +22,7 @@ $ npx ember-cli new ember-project
### Deploying From Your Terminal
You can deploy your new Ember project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Ember project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -2,19 +2,19 @@
# Gatsby Example
This directory is a brief example of a [Gatsby](https://www.gatsbyjs.org/) app with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction) that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Gatsby](https://www.gatsbyjs.org/) app with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction) that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Gatsby project, along with Serverless Functions, with ZEIT Now.
Deploy your own Gatsby project, along with Serverless Functions, with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/gatsby)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/gatsby)
_Live Example: https://gatsby.now-examples.now.sh_
### How We Created This Example
To get started with Gatsby on Now, you can use the [Gatsby CLI](https://www.gatsbyjs.org/docs/gatsby-cli/) to initialize the project:
To get started with Gatsby on Vercel, you can use the [Gatsby CLI](https://www.gatsbyjs.org/docs/gatsby-cli/) to initialize the project:
```shell
$ gatsby new gatsby-site
@@ -22,7 +22,7 @@ $ gatsby new gatsby-site
### Deploying From Your Terminal
You can deploy your new Gatsby project, along with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction), with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Gatsby project, along with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction), with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -8,7 +8,7 @@ module.exports = {
resolve: `gatsby-plugin-manifest`,
options: {
name: 'Gatsby + Node.js (TypeScript) API',
short_name: 'Gatbsy + Node.js (TypeScript)',
short_name: 'Gatsby + Node.js (TypeScript)',
start_url: '/',
icon: 'src/images/gatsby-icon.png',
},

View File

@@ -21,11 +21,11 @@ function Index() {
<h2>
Deployed with{' '}
<a
href="https://zeit.co/docs"
href="https://vercel.com/docs"
target="_blank"
rel="noreferrer noopener"
>
ZEIT Now
Vercel
</a>
!
</h2>

View File

@@ -2,19 +2,19 @@
# Gridsome Example
This directory is a brief example of a [Gridsome](https://gridsome.org/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Gridsome](https://gridsome.org/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Gridsome project with ZEIT Now.
Deploy your own Gridsome project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/gridsome)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/gridsome)
_Live Example: https://gridsome.now-examples.now.sh_
### How We Created This Example
To get started with Gridsome for deployment with ZEIT Now, you can use the [Gridsome CLI](https://gridsome.org/docs/gridsome-cli/) to initialize the project:
To get started with Gridsome for deployment with Vercel, you can use the [Gridsome CLI](https://gridsome.org/docs/gridsome-cli/) to initialize the project:
```shell
$ gridsome create my-website
@@ -22,7 +22,7 @@ $ gridsome create my-website
### Deploying From Your Terminal
You can deploy your new Gridsome project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Gridsome project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -2,19 +2,19 @@
# Hexo Example
This directory is a brief example of a [Hexo](https://hexo.io/) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Hexo](https://hexo.io/) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Hexo project with ZEIT Now.
Deploy your own Hexo project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/hexo)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/hexo)
_Live Example: https://hexo.now-examples.now.sh_
### How We Created This Example
To get started with Hexo for deployment with ZEIT Now, you can use the [Hexo CLI](https://hexo.io/docs/index.html#Installation) to initialize the project:
To get started with Hexo for deployment with Vercel, you can use the [Hexo CLI](https://hexo.io/docs/index.html#Installation) to initialize the project:
```shell
$ hexo init project-name
@@ -22,7 +22,7 @@ $ hexo init project-name
### Deploying From Your Terminal
You can deploy your new Hexo project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Hexo project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -1,18 +1,18 @@
# Hugo Example
This directory is a brief example of a [Hugo](https://gohugo.io/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Hugo](https://gohugo.io/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Hugo project with ZEIT Now.
Deploy your own Hugo project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/hugo)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/hugo)
_Live Example: https://hugo.now-examples.now.sh_
### How We Created This Example
To get started with Hugo for deployment with ZEIT Now, you can use the [Hugo CLI](https://gohugo.io/commands/) to initialize the project:
To get started with Hugo for deployment with Vercel, you can use the [Hugo CLI](https://gohugo.io/commands/) to initialize the project:
```shell
$ hugo new site project-name
@@ -20,7 +20,7 @@ $ hugo new site project-name
### Deploying From Your Terminal
You can deploy your new Hugo project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Hugo project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -4,4 +4,4 @@ date: 2019-07-18T17:18:05+01:00
draft: false
---
# Hugo on ZEIT Now
# Hugo on Vercel

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1 @@
<svg width="350" height="140" xmlns="http://www.w3.org/2000/svg" style="background:#f6f7f9"><g fill="none" fill-rule="evenodd"><path fill="#F04141" style="mix-blend-mode:multiply" d="M61.905-34.23l96.194 54.51-66.982 54.512L22 34.887z"/><circle fill="#10DC60" style="mix-blend-mode:multiply" cx="155.5" cy="135.5" r="57.5"/><path fill="#3880FF" style="mix-blend-mode:multiply" d="M208.538 9.513l84.417 15.392L223.93 93.93z"/><path fill="#FFCE00" style="mix-blend-mode:multiply" d="M268.625 106.557l46.332-26.75 46.332 26.75v53.5l-46.332 26.75-46.332-26.75z"/><circle fill="#7044FF" style="mix-blend-mode:multiply" cx="299.5" cy="9.5" r="38.5"/><rect fill="#11D3EA" style="mix-blend-mode:multiply" transform="rotate(-60 148.47 37.886)" x="143.372" y="-7.056" width="10.196" height="89.884" rx="5.098"/><path d="M-25.389 74.253l84.86 8.107c5.498.525 9.53 5.407 9.004 10.905a10 10 0 0 1-.057.477l-12.36 85.671a10.002 10.002 0 0 1-11.634 8.42l-86.351-15.226c-5.44-.959-9.07-6.145-8.112-11.584l13.851-78.551a10 10 0 0 1 10.799-8.219z" fill="#7044FF" style="mix-blend-mode:multiply"/><circle fill="#0CD1E8" style="mix-blend-mode:multiply" cx="273.5" cy="106.5" r="20.5"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Ionic App</title>
<base href="/" />
<meta
name="viewport"
content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<link rel="shortcut icon" type="image/png" href="%PUBLIC_URL%/assets/icon/favicon.png" />
<!-- add to homescreen for ios -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-title" content="Ionic App" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
</head>
<body>
<div id="root"></div>
</body>
</html>

View File

@@ -0,0 +1,21 @@
{
"short_name": "Ionic App",
"name": "My Ionic App",
"icons": [
{
"src": "assets/icon/favicon.png",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "assets/icon/icon.png",
"type": "image/png",
"sizes": "512x512",
"purpose": "maskable"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#ffffff",
"background_color": "#ffffff"
}

View File

@@ -1,18 +1,18 @@
# Ionic React Example
This directory is a brief example of an [Ionic React](https://ionicframework.com/docs/react/overview) app that can be deployed with ZEIT Now and zero configuration
This directory is a brief example of an [Ionic React](https://ionicframework.com/docs/react/overview) app that can be deployed with Vercel and zero configuration
## Deploy Your Own
Deploy your own Ionic React project with ZEIT Now.
Deploy your own Ionic React project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/ionic-react)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/ionic-react)
_Live Example: https://ionic-react.now-examples.now.sh_
### How We Created This Example
To get started with Ionic React deployed with ZEIT Now, you can use the [Ionic CLI](https://ionicframework.com/docs/cli) to initialize the project:
To get started with Ionic React deployed with Vercel, you can use the [Ionic CLI](https://ionicframework.com/docs/cli) to initialize the project:
```shell
$ npx ionic start [project-name] conference --type react && cd [project-name]
@@ -20,7 +20,7 @@ $ npx ionic start [project-name] conference --type react && cd [project-name]
### Deploying From Your Terminal
You can deploy your new Ionic React project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Ionic React project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -1,18 +1,18 @@
# Jekyll Example
This directory is a brief example of a [Jekyll](https://jekyllrb.com/) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Jekyll](https://jekyllrb.com/) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Jekyll project with ZEIT Now.
Deploy your own Jekyll project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/jekyll)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/jekyll)
_Live Example: https://jekyll.now-examples.now.sh_
### How We Created This Example
To get started with Jekyll for deployment with ZEIT Now, you can use the [Jekyll CLI](https://jekyllrb.com/docs/usage/) to initialize the project:
To get started with Jekyll for deployment with Vercel, you can use the [Jekyll CLI](https://jekyllrb.com/docs/usage/) to initialize the project:
```shell
$ jekyll new my-blog
@@ -20,7 +20,7 @@ $ jekyll new my-blog
### Deploying From Your Terminal
You can deploy your new Jekyll project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Jekyll project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -1,18 +1,18 @@
# Middleman Example
This directory is a brief example of a [Middleman](https://middlemanapp.com/) site that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Middleman](https://middlemanapp.com/) site that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Middleman project with ZEIT Now.
Deploy your own Middleman project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/middleman)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/middleman)
_Live Example: https://middleman.now-examples.now.sh_
### How We Created This Example
To get started with Middleman for deployment with ZEIT Now, you can use the [Middleman CLI](https://middlemanapp.com/basics/start-new-site/) to initialize the project:
To get started with Middleman for deployment with Vercel, you can use the [Middleman CLI](https://middlemanapp.com/basics/start-new-site/) to initialize the project:
```shell
$ middleman init project-name
@@ -20,7 +20,7 @@ $ middleman init project-name
### Deploying From Your Terminal
You can deploy your new Middleman project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Middleman project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -21,10 +21,10 @@ To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/zeit/next.js/) - your feedback and contributions are welcome!
You can check out [the Next.js GitHub repository](https://github.com/zeit/next.js) - your feedback and contributions are welcome!
## Deploy on ZEIT Now
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [ZEIT Now Platform](https://zeit.co/import?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/import?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.

View File

@@ -36,12 +36,12 @@ const Home = () => (
</a>
<a
href="https://zeit.co/new?filter=next.js&utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
href="https://vercel.com/new?filter=next.js&utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className="card"
>
<h3>Deploy &rarr;</h3>
<p>
Instantly deploy your Next.js site to a public URL with ZEIT Now.
Instantly deploy your Next.js site to a public URL with Vercel.
</p>
</a>
</div>
@@ -49,11 +49,11 @@ const Home = () => (
<footer>
<a
href="https://zeit.co?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
Powered by <img src="/zeit.svg" alt="ZEIT Logo" />
Powered by <img src="/vercel.svg" alt="Vercel Logo" />
</a>
</footer>

View File

Before

Width:  |  Height:  |  Size: 794 B

After

Width:  |  Height:  |  Size: 794 B

View File

@@ -1,18 +1,18 @@
# Nuxt.js Example
This directory is a brief example of a [Nuxt.js](https://nuxtjs.org) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Nuxt.js](https://nuxtjs.org) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Nuxt.js project with ZEIT Now.
Deploy your own Nuxt.js project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/nuxtjs)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/nuxtjs)
_Live Example: https://nuxtjs.now-examples.now.sh_
### How We Created This Example
To get started with Nuxt.js deployed with ZEIT Now, you can use the [Create-Nuxt-App CLI](https://www.npmjs.com/package/create-nuxt-app) to initialize the project:
To get started with Nuxt.js deployed with Vercel, you can use the [Create-Nuxt-App CLI](https://www.npmjs.com/package/create-nuxt-app) to initialize the project:
```shell
$ npx create-nuxt-app my-app
@@ -22,7 +22,7 @@ $ npx create-nuxt-app my-app
### Deploying From Your Terminal
You can deploy your new Nuxt.js project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Nuxt.js project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -2,19 +2,19 @@
# Polymer Example
This directory is a brief example of a [Polymer](https://www.polymer-project.org/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Polymer](https://www.polymer-project.org/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Polymer project with ZEIT Now.
Deploy your own Polymer project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/polymer)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/polymer)
_Live Example: https://polymer.now-examples.now.sh_
### How We Created This Example
To get started with Polymer deployed with ZEIT Now, you can use the [Polymer CLI](https://polymer-library.polymer-project.org/3.0/docs/tools/polymer-cli) to initialize the project:
To get started with Polymer deployed with Vercel, you can use the [Polymer CLI](https://polymer-library.polymer-project.org/3.0/docs/tools/polymer-cli) to initialize the project:
```shell
$ polymer init
@@ -22,7 +22,7 @@ $ polymer init
### Deploying From Your Terminal
You can deploy your new Polymer project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Polymer project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -2,19 +2,19 @@
# Preact Example
This directory is a brief example of a [Preact](https://preactjs.com/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Preact](https://preactjs.com/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Preact project with ZEIT Now.
Deploy your own Preact project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/preact)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/preact)
_Live Example: https://preact.now-examples.now.sh_
### How We Created This Example
To get started with Preact for deployment with ZEIT Now, you can use the [Preact CLI](https://github.com/preactjs/preact-cli) to initialize the project:
To get started with Preact for deployment with Vercel, you can use the [Preact CLI](https://github.com/preactjs/preact-cli) to initialize the project:
```shell
$ preact create default my-project
@@ -22,7 +22,7 @@ $ preact create default my-project
### Deploying From Your Terminal
You can deploy your new Preact project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Preact project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -2,19 +2,19 @@
# Saber Example
This directory is a brief example of a [Saber](https://saber.land) site that can be deployed to ZEIT Now with zero configuration.
This directory is a brief example of a [Saber](https://saber.land) site that can be deployed to Vercel with zero configuration.
## Deploy Your Own
Deploy your own Saber project with ZEIT Now.
Deploy your own Saber project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/saber)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/saber)
_Live Example: https://saber.now-examples.now.sh_
### How We Created This Example
To get started with Saber on Now, you can use [`npm init`](https://docs.npmjs.com/cli/init) to initialize the project:
To get started with Saber on Vercel, you can use [`npm init`](https://docs.npmjs.com/cli/init) to initialize the project:
```shell
$ npm init site my-saber-site

View File

@@ -1,18 +1,18 @@
# Sapper Example
This directory is a brief example of a [Sapper](https://sapper.svelte.dev/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Sapper](https://sapper.svelte.dev/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Sapper project with ZEIT Now.
Deploy your own Sapper project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/sapper)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/sapper)
_Live Example: https://sapper.now-examples.now.sh_
### How We Created This Example
To get started with Sapper deployed with ZEIT Now, you can use [degit](https://github.com/Rich-Harris/degit) to initialize the project:
To get started with Sapper deployed with Vercel, you can use [degit](https://github.com/Rich-Harris/degit) to initialize the project:
```shell
$ npx degit "sveltejs/sapper-template#webpack" my-sapper-app
@@ -22,7 +22,7 @@ $ npx degit "sveltejs/sapper-template#webpack" my-sapper-app
### Deploying From Your Terminal
You can deploy your new Sapper project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Sapper project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -65,7 +65,7 @@ const posts = [
title: 'How is Sapper different from Next.js?',
slug: 'how-is-sapper-different-from-next',
html: `
<p><a href='https://github.com/zeit/next.js'>Next.js</a> is a React framework from <a href='https://zeit.co'>Zeit</a>, and is the inspiration for Sapper. There are a few notable differences, however:</p>
<p><a href='https://github.com/zeit/next.js'>Next.js</a> is a React framework from <a href='https://vercel.com'>Zeit</a>, and is the inspiration for Sapper. There are a few notable differences, however:</p>
<ul>
<li>It's powered by <a href='https://svelte.dev'>Svelte</a> instead of React, so it's faster and your apps are smaller</li>

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>Scully on ZEIT Now</title>
<title>Scully on Vercel</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">

View File

@@ -1,18 +1,18 @@
# Stencil Example
This directory is a brief example of a [Stencil](https://stenciljs.com/) app that can be deployed with ZEIT Now and zero configuration
This directory is a brief example of a [Stencil](https://stenciljs.com/) app that can be deployed with Vercel and zero configuration
## Deploy Your Own
Deploy your own Stencil project with ZEIT Now.
Deploy your own Stencil project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/stencil)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/stencil)
_Live Example: https://stencil.now-examples.now.sh_
### How We Created This Example
To get started with Stencil deployed with ZEIT Now, you can use the [Stencil project initializer](https://stenciljs.com/docs/getting-started#starting-a-new-project) to initialize the project:
To get started with Stencil deployed with Vercel, you can use the [Stencil project initializer](https://stenciljs.com/docs/getting-started#starting-a-new-project) to initialize the project:
```shell
$ npm init stencil
@@ -20,7 +20,7 @@ $ npm init stencil
### Deploying From Your Terminal
You can deploy your new Stencil project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Stencil project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -1,18 +1,18 @@
# Svelte Example
This directory is a brief example of a [Svelte](https://svelte.dev/) app with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction) that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Svelte](https://svelte.dev/) app with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction) that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Svelte project, along with Serverless Functions, with ZEIT Now.
Deploy your own Svelte project, along with Serverless Functions, with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/svelte)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/svelte)
_Live Example: https://svelte.now-examples.now.sh_
### How We Created This Example
To get started with Svelte, along with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction), deployed with ZEIT Now, you can use [degit](https://github.com/Rich-Harris/degit) to initialize the project:
To get started with Svelte, along with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction), deployed with Vercel, you can use [degit](https://github.com/Rich-Harris/degit) to initialize the project:
```shell
$ npx degit sveltejs/template my-svelte-project
@@ -20,7 +20,7 @@ $ npx degit sveltejs/template my-svelte-project
### Deploying From Your Terminal
You can deploy your new Svelte project, along with [Serverless Functions](https://zeit.co/docs/v2/serverless-functions/introduction), with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Svelte project, along with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction), with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -13,8 +13,8 @@
<h1>Svelte + Node.js API</h1>
<h2>
Deployed with
<a href="https://zeit.co/docs" target="_blank" rel="noreferrer noopener">
ZEIT Now
<a href="https://vercel.com/docs" target="_blank" rel="noreferrer noopener">
Vercel
</a>
!
</h2>

View File

@@ -2,19 +2,19 @@
# UmiJS Example
This directory is a brief example of a [UmiJS](https://umijs.org/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [UmiJS](https://umijs.org/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own UmiJS project with ZEIT Now.
Deploy your own UmiJS project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/umijs)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/umijs)
_Live Example: https://umijs.now-examples.now.sh_
### How We Created This Example
To get started with UmiJS deployed with ZEIT Now, you can use the [Umi CLI](https://github.com/umijs/create-umi) to initialize the project:
To get started with UmiJS deployed with Vercel, you can use the [Umi CLI](https://github.com/umijs/create-umi) to initialize the project:
```shell
$ yarn create umi app-name
@@ -22,7 +22,7 @@ $ yarn create umi app-name
### Deploying From Your Terminal
You can deploy your new UmiJS project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new UmiJS project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -4,7 +4,7 @@ This directory is a realtime serverless whiteboard powered by Pusher. The fronte
## Creating This Example
To get started with a realtime whiteboard on Now, you can use [Now CLI](https://zeit.co/download) to initialize the project:
To get started with a realtime whiteboard on Vercel, you can use [Now CLI](https://vercel.com/download) to initialize the project:
```shell
$ now init vanilla-pusher-functions

View File

@@ -2,19 +2,19 @@
# Vue.js Example
This directory is a brief example of a [Vue.js](https://vuejs.org/) app that can be deployed with ZEIT Now and zero configuration.
This directory is a brief example of a [Vue.js](https://vuejs.org/) app that can be deployed with Vercel and zero configuration.
## Deploy Your Own
Deploy your own Vue.js project with ZEIT Now.
Deploy your own Vue.js project with Vercel.
[![Deploy with ZEIT Now](https://zeit.co/button)](https://zeit.co/import/project?template=https://github.com/zeit/now/tree/master/examples/vue)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/vue)
_Live Example: https://vue.now-examples.now.sh_
### How We Created This Example
To get started with Vue.js deployed with ZEIT Now, you can use the [Vue CLI](https://cli.vuejs.org/guide/creating-a-project.html#vue-create) to initialize the project:
To get started with Vue.js deployed with Vercel, you can use the [Vue CLI](https://cli.vuejs.org/guide/creating-a-project.html#vue-create) to initialize the project:
```shell
$ vue create
@@ -22,7 +22,7 @@ $ vue create
### Deploying From Your Terminal
You can deploy your new Vue.js project with a single command from your terminal using [Now CLI](https://zeit.co/download):
You can deploy your new Vue.js project with a single command from your terminal using [Now CLI](https://vercel.com/download):
```shell
$ now

View File

@@ -1,6 +1,6 @@
{
"name": "@now/build-utils",
"version": "2.2.1",
"version": "2.2.2-canary.2",
"license": "MIT",
"main": "./dist/index.js",
"types": "./dist/index.d.js",

View File

@@ -488,7 +488,7 @@ function getMissingBuildScriptError() {
code: 'missing_build_script',
message:
'Your `package.json` file is missing a `build` property inside the `scripts` property.' +
'\nMore details: https://zeit.co/docs/v2/platform/frequently-asked-questions#missing-build-script',
'\nMore details: https://vercel.com/docs/v2/platform/frequently-asked-questions#missing-build-script',
};
}

View File

@@ -27,7 +27,7 @@ interface Props {
*/
code: string;
/**
* Optional hyperlink starting with https://zeit.co to
* Optional hyperlink starting with https://vercel.com to
* link to more information about this error.
*/
link?: string;

View File

@@ -56,7 +56,7 @@ export async function getSupportedNodeVersion(
throw new NowBuildError({
code: 'NOW_BUILD_UTILS_NODE_VERSION_INVALID',
link:
'https://zeit.co/docs/runtimes#official-runtimes/node-js/node-js-version',
'https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-version',
message: intro + '\n' + pleaseSet,
});
}
@@ -74,7 +74,7 @@ export async function getSupportedNodeVersion(
throw new NowBuildError({
code: 'NOW_BUILD_UTILS_NODE_VERSION_DISCONTINUED',
link:
'https://zeit.co/docs/runtimes#official-runtimes/node-js/node-js-version',
'https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-version',
message: intro + '\n' + pleaseSet + '\n' + upstreamProvider,
});
}

View File

@@ -186,7 +186,8 @@ export async function getNodeVersion(
async function scanParentDirs(destPath: string, readPackageJson = false) {
assert(path.isAbsolute(destPath));
let hasPackageLockJson = false;
type CliType = 'yarn' | 'npm';
let cliType: CliType = 'yarn';
let packageJson: PackageJson | undefined;
let currentDestPath = destPath;
@@ -200,9 +201,13 @@ async function scanParentDirs(destPath: string, readPackageJson = false) {
packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
}
// eslint-disable-next-line no-await-in-loop
hasPackageLockJson = await fs.pathExists(
path.join(currentDestPath, 'package-lock.json')
);
const [hasPackageLockJson, hasYarnLock] = await Promise.all([
fs.pathExists(path.join(currentDestPath, 'package-lock.json')),
fs.pathExists(path.join(currentDestPath, 'yarn.lock')),
]);
if (hasPackageLockJson && !hasYarnLock) {
cliType = 'npm';
}
break;
}
@@ -211,7 +216,7 @@ async function scanParentDirs(destPath: string, readPackageJson = false) {
currentDestPath = newDestPath;
}
return { hasPackageLockJson, packageJson };
return { cliType, packageJson };
}
interface WalkParentDirsProps {
@@ -268,7 +273,7 @@ export async function runNpmInstall(
assert(path.isAbsolute(destPath));
debug(`Installing to ${destPath}`);
const { hasPackageLockJson } = await scanParentDirs(destPath);
const { cliType } = await scanParentDirs(destPath);
const opts: SpawnOptionsExtended = { cwd: destPath, ...spawnOpts };
const env = opts.env ? { ...opts.env } : { ...process.env };
delete env.NODE_ENV;
@@ -277,7 +282,7 @@ export async function runNpmInstall(
let command: 'npm' | 'yarn';
let commandArgs: string[];
if (hasPackageLockJson) {
if (cliType === 'npm') {
opts.prettyCommand = 'npm install';
command = 'npm';
commandArgs = args
@@ -350,10 +355,7 @@ export async function runPackageJsonScript(
spawnOpts?: SpawnOptions
) {
assert(path.isAbsolute(destPath));
const { packageJson, hasPackageLockJson } = await scanParentDirs(
destPath,
true
);
const { packageJson, cliType } = await scanParentDirs(destPath, true);
const hasScript = Boolean(
packageJson &&
packageJson.scripts &&
@@ -362,7 +364,7 @@ export async function runPackageJsonScript(
);
if (!hasScript) return false;
if (hasPackageLockJson) {
if (cliType === 'npm') {
const prettyCommand = `npm run ${scriptName}`;
console.log(`Running "${prettyCommand}"`);
await spawnAsync('npm', ['run', scriptName], {

View File

@@ -50,7 +50,7 @@ export interface Config {
export interface Meta {
isDev?: boolean;
skipDownload?: boolean;
requestPath?: string;
requestPath?: string | null;
filesChanged?: string[];
filesRemoved?: string[];
env?: Env;
@@ -187,12 +187,48 @@ export interface ShouldServeOptions {
config: Config;
}
export interface StartDevServerOptions {
/**
* Name of entrypoint file for this particular build job. Value
* `files[entrypoint]` is guaranteed to exist and be a valid File reference.
* `entrypoint` is always a discrete file and never a glob, since globs are
* expanded into separate builds at deployment time.
*/
entrypoint: string;
/**
* A writable temporary directory where you are encouraged to perform your
* build process. This directory will be populated with the restored cache.
*/
workPath: string;
}
export interface StartDevServerSuccess {
/**
* Port number where the dev server can be connected to, assumed to be running
* on `localhost`.
*/
port: number;
/**
* Process ID number of the dev server. Useful for the `now dev` server to
* shut down the dev server once an HTTP request has been fulfilled.
*/
pid: number;
}
/**
* `startDevServer()` may return `null` to opt-out of spawning a dev server for
* a given `entrypoint`.
*/
export type StartDevServerResult = StartDevServerSuccess | null;
/**
* Credit to Iain Reid, MIT license.
* Source: https://gist.github.com/iainreid820/5c1cc527fe6b5b7dba41fec7fe54bf6e
*/
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace PackageJson {
export namespace PackageJson {
/**
* An author or contributor
*/

View File

@@ -2,10 +2,15 @@
"version": 2,
"builds": [
{ "src": "with-npm/index.js", "use": "@now/node" },
{ "src": "with-yarn/index.js", "use": "@now/node" }
{ "src": "with-yarn/index.js", "use": "@now/node" },
{ "src": "with-yarn-and-npm/index.js", "use": "@now/node" }
],
"probes": [
{ "path": "/with-npm", "mustContain": "npm:RANDOMNESS_PLACEHOLDER" },
{ "path": "/with-yarn", "mustContain": "yarn:RANDOMNESS_PLACEHOLDER" }
{ "path": "/with-yarn", "mustContain": "yarn:RANDOMNESS_PLACEHOLDER" },
{
"path": "/with-yarn-and-npm",
"mustContain": "yarn:RANDOMNESS_PLACEHOLDER"
}
]
}

View File

@@ -0,0 +1,14 @@
const fs = require('fs');
const path = require('path');
const execpath = path.basename(process.env.npm_execpath);
console.log('execpath', execpath);
if (execpath === 'yarn.js' || execpath === 'yarn') {
fs.writeFileSync(
'index.js',
'module.exports = (_, resp) => resp.end("yarn:RANDOMNESS_PLACEHOLDER");'
);
} else {
throw new Error('yarn is expected');
}

View File

@@ -0,0 +1,3 @@
{
"lockfileVersion": 1
}

View File

@@ -0,0 +1,5 @@
{
"scripts": {
"now-build": "node must-be-yarn.js"
}
}

View File

@@ -0,0 +1,3 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1

View File

@@ -3,7 +3,7 @@
## Usages
To install the latest version of Now CLI, visit [zeit.co/download](https://zeit.co/download) or run this command:
To install the latest version of Now CLI, visit [vercel.com/download](https://vercel.com/download) or run this command:
```sh
npm i -g now
@@ -19,4 +19,4 @@ now # Deploy to the cloud
## Documentation
For details on how to use Now CLI, check out our [documentation](https://zeit.co/docs).
For details on how to use Now CLI, check out our [documentation](https://vercel.com/docs).

View File

@@ -1,10 +1,10 @@
{
"name": "now",
"version": "18.0.0",
"version": "18.0.1-canary.6",
"preferGlobal": true,
"license": "Apache-2.0",
"description": "The command-line interface for Now",
"homepage": "https://zeit.co",
"homepage": "https://vercel.com",
"repository": {
"type": "git",
"url": "https://github.com/zeit/now.git",
@@ -64,6 +64,7 @@
"devDependencies": {
"@sentry/node": "5.5.0",
"@sindresorhus/slugify": "0.11.0",
"@tootallnate/once": "1.1.2",
"@types/ansi-escapes": "3.0.0",
"@types/ansi-regex": "4.0.0",
"@types/async-retry": "1.2.1",

View File

@@ -39,11 +39,14 @@ async function createBuildersTarball() {
}
}
const yarn = join(dirRoot, '../../node_modules/yarn/bin/yarn.js');
await execa(process.execPath, [yarn, 'add', '--no-lockfile', ...builders], {
cwd: buildersDir,
stdio: 'inherit',
});
await execa(
'npm',
['install', '--save-exact', '--no-package-lock', ...builders],
{
cwd: buildersDir,
stdio: 'inherit',
}
);
const packer = tar.pack(buildersDir);
await pipe(

View File

@@ -125,7 +125,7 @@ export default async function set(
if (args.length === 0 && !rules) {
output.error(
`To ship to production, optionally configure your domains (${link(
'https://zeit.co/docs/v2/custom-domains/'
'https://vercel.com/docs/v2/custom-domains'
)}) and run ${cmd('now --prod')}.`
);
return 1;

View File

@@ -49,6 +49,7 @@ const help = () => {
--ca ${chalk.bold.underline(
'FILE'
)} CA certificate chain file
-N, --next Show next page of results
${chalk.dim('Examples:')}
@@ -61,6 +62,12 @@ const help = () => {
${chalk.gray('')} Remove a certificate
${chalk.cyan('$ now certs rm id')}
${chalk.gray('')} Paginate results, where ${chalk.dim(
'`1584722256178`'
)} is the time in milliseconds since the UNIX epoch.
${chalk.cyan(`$ now certs ls --next 1584722256178`)}
`);
};
@@ -69,7 +76,7 @@ const COMMAND_CONFIG = {
issue: ['issue'],
ls: ['ls', 'list'],
renew: ['renew'],
rm: ['rm', 'remove']
rm: ['rm', 'remove'],
};
export default async function main(ctx: NowContext) {
@@ -80,10 +87,11 @@ export default async function main(ctx: NowContext) {
'--challenge-only': Boolean,
'--overwrite': Boolean,
'--output': String,
'--after': String,
'--crt': String,
'--key': String,
'--ca': String
'--ca': String,
'--next': Number,
'-N': '--next',
});
} catch (err) {
handleError(err);

View File

@@ -1,7 +1,5 @@
import chalk from 'chalk';
import ms from 'ms';
import plural from 'pluralize';
import psl from 'psl';
import table from 'text-table';
// @ts-ignore
import Now from '../../util';
@@ -10,14 +8,14 @@ import Client from '../../util/client';
import getScope from '../../util/get-scope';
import stamp from '../../util/output/stamp';
import getCerts from '../../util/certs/get-certs';
import { CertNotFound } from '../../util/errors-ts';
import strlen from '../../util/strlen';
import { Output } from '../../util/output';
import { NowContext, Cert } from '../../types';
import getCommandFlags from '../../util/get-command-flags';
interface Options {
'--debug'?: boolean;
'--after'?: string;
'--next'?: number;
}
async function ls(
@@ -32,8 +30,7 @@ async function ls(
} = ctx;
const { currentTeam } = config;
const { apiUrl } = ctx;
const debug = opts['--debug'];
const after = opts['--after'];
const { '--debug': debug, '--next': nextTimestamp } = opts;
const client = new Client({ apiUrl, token, currentTeam, debug });
let contextName = null;
@@ -47,7 +44,10 @@ async function ls(
throw err;
}
if (typeof nextTimestamp !== 'undefined' && Number.isNaN(nextTimestamp)) {
output.error('Please provide a number for flag --next');
return 1;
}
const now = new Now({ apiUrl, token, debug, currentTeam });
const lsStamp = stamp();
@@ -59,38 +59,29 @@ async function ls(
}
// Get the list of certificates
const certificates = await getCerts(output, now, { after }).catch(err => err);
if (certificates instanceof CertNotFound) {
output.error(certificates.message);
return 1;
}
if (certificates instanceof Error) {
throw certificates;
}
const certs = sortByCn(certificates);
output.log(
`${plural('certificate', certs.length, true)} found under ${chalk.bold(
contextName
)} ${lsStamp()}`
const { certs, pagination } = await getCerts(now, nextTimestamp).catch(
err => err
);
if (certs.length >= 100) {
const { uid: lastCert } = certificates[certificates.length - 1];
output.note(
`There may be more certificates that can be retrieved with ${cmd(
`now ${process.argv.slice(2).join(' ')} --after=${lastCert}`
)}.\n`
);
}
output.log(
`${
certs.length > 0 ? 'Certificates' : 'No certificates'
} found under ${chalk.bold(contextName)} ${lsStamp()}`
);
if (certs.length > 0) {
console.log(formatCertsTable(certs));
}
if (pagination && pagination.count === 20) {
const flags = getCommandFlags(opts, ['_', '--next']);
output.log(
`To display the next page run ${cmd(
`now certs ls${flags} --next ${pagination.next}`
)}`
);
}
return 0;
}
@@ -161,18 +152,4 @@ function formatExpirationDate(date: Date) {
: chalk.gray(`in ${ms(diff)}`);
}
/**
* This function sorts the list of certs by root domain changing *
* to 'wildcard' since that will allow psl get the root domain
* properly to make the comparison.
*/
function sortByCn(certsList: Cert[]) {
return certsList.concat().sort((a: Cert, b: Cert) => {
const domainA = psl.get(a.cns[0].replace('*', 'wildcard'));
const domainB = psl.get(b.cns[0].replace('*', 'wildcard'));
if (!domainA || !domainB) return 0;
return domainA.localeCompare(domainB);
});
}
export default ls;

View File

@@ -98,7 +98,7 @@ async function getCertsToDelete(
contextName: string,
id: string
) {
const cert = await getCertById(output, client, id);
const cert = await getCertById(client, id);
if (cert instanceof ERRORS.CertNotFound) {
const certs = await getCertsForDomain(output, client, contextName, id);
if (certs instanceof ERRORS.CertsPermissionDenied) {

View File

@@ -352,7 +352,7 @@ export default async function main(
path,
sourcePath,
project
? `To change your project settings, go to https://zeit.co/${org.slug}/${project.name}/settings`
? `To change your project settings, go to https://vercel.com/${org.slug}/${project.name}/settings`
: ''
)) === false
) {
@@ -766,7 +766,7 @@ function handleCreateDeployError(output, error) {
return 1;
}
const link = 'https://zeit.co/docs/v2/deployments/configuration/';
const link = 'https://vercel.com/docs/configuration';
output.error(
`Failed to validate ${highlight(

View File

@@ -259,7 +259,7 @@ export default async function main(
quiet = !isTTY;
({ log, error, note, debug, warn } = output);
const infoUrl = 'https://zeit.co/guides/migrate-to-zeit-now';
const infoUrl = 'https://vercel.com/guides/migrate-to-vercel';
warn(
`You are using an old version of the Now Platform. More: ${link(infoUrl)}`
@@ -794,10 +794,10 @@ async function sync({
});
}
let url = 'https://zeit.co/account/plan';
let url = 'https://vercel.com/account/plan';
if (currentTeam) {
url = `https://zeit.co/teams/${contextName}/settings/plan`;
url = `https://vercel.com/teams/${contextName}/settings/plan`;
}
note(
@@ -1104,7 +1104,7 @@ function handleCreateDeployError(output: Output, error: Error) {
`Failed to validate ${highlight(
'now.json'
)}: ${message}\nDocumentation: ${link(
'https://zeit.co/docs/v2/advanced/configuration'
'https://vercel.com/docs/configuration'
)}`
);

View File

@@ -37,7 +37,7 @@ export default async function dev(
// retrieve dev command
const [link, frameworks] = await Promise.all([
getLinkedProject(output, client, cwd),
getFrameworks(),
getFrameworks(client),
]);
if (link.status === 'error') {
@@ -48,7 +48,7 @@ export default async function dev(
output.print(
`${chalk.red(
'Error!'
)} Your codebase isnt linked to a project on ZEIT Now. Run ${cmd(
)} Your codebase isnt linked to a project on Vercel. Run ${cmd(
'now'
)} to link it.\n`
);

View File

@@ -64,7 +64,7 @@ const help = () => {
${chalk.cyan(
`$ now dns add <DOMAIN> <NAME> CAA '<FLAGS> <TAG> "<VALUE>"'`
)}
${chalk.cyan(`$ now dns add zeit.rocks '@' CAA '0 issue "zeit.co"'`)}
${chalk.cyan(`$ now dns add zeit.rocks '@' CAA '0 issue "example.com"'`)}
${chalk.gray('')} Import a Zone file
@@ -79,7 +79,7 @@ const COMMAND_CONFIG = {
add: ['add'],
import: ['import'],
ls: ['ls', 'list'],
rm: ['rm', 'remove']
rm: ['rm', 'remove'],
};
export default async function main(ctx: NowContext) {

View File

@@ -94,7 +94,7 @@ export default async function add(
`The domain ${chalk.underline(
addedDomain.meta.domain
)} is already registered by a different account.\n` +
` If this seems like a mistake, please contact us at support@zeit.co`
` If this seems like a mistake, please contact us at support@vercel.com`
);
return 1;
}

View File

@@ -151,12 +151,12 @@ export default async function transferIn(
output.warn(
`Once transferred, your domain ${param(
domainName
)} will be using ZEIT DNS.\n`
)} will be using Vercel DNS.\n`
);
output.print(
` To transfer with previous DNS records, export the zone file from your previous registrar.\n`
);
output.print(` Then import it to ZEIT DNS by using:\n`);
output.print(` Then import it to Vercel DNS by using:\n`);
output.print(` ${cmd(`now dns import ${domainName} <zonefile>`)}\n\n`);
return 0;
}

View File

@@ -45,7 +45,7 @@ export default async function add(
output.print(
`${chalk.red(
'Error!'
)} Your codebase isnt linked to a project on ZEIT Now. Run ${cmd(
)} Your codebase isnt linked to a project on Vercel. Run ${cmd(
'now'
)} to link it.\n`
);

View File

@@ -41,7 +41,7 @@ export default async function ls(
output.print(
`${chalk.red(
'Error!'
)} Your codebase isnt linked to a project on ZEIT Now. Run ${cmd(
)} Your codebase isnt linked to a project on Vercel. Run ${cmd(
'now'
)} to link it.\n`
);

View File

@@ -42,7 +42,7 @@ export default async function pull(
output.print(
`${chalk.red(
'Error!'
)} Your codebase isnt linked to a project on ZEIT Now. Run ${cmd(
)} Your codebase isnt linked to a project on Vercel. Run ${cmd(
'now'
)} to link it.\n`
);

View File

@@ -46,7 +46,7 @@ export default async function rm(
output.print(
`${chalk.red(
'Error!'
)} Your codebase isnt linked to a project on ZEIT Now. Run ${cmd(
)} Your codebase isnt linked to a project on Vercel. Run ${cmd(
'now'
)} to link it.\n`
);

View File

@@ -155,11 +155,7 @@ export default async function main(ctx) {
type === STATIC
? null
: caught(
now.fetch(
`/v1/now/deployments/${encodeURIComponent(
finalId
)}/events?types=event`
)
now.fetch(`/v1/now/deployments/${encodeURIComponent(finalId)}/events`)
),
isBuilds ? now.fetch(buildsUrl) : { builds: [] },
]);

View File

@@ -4,7 +4,7 @@ import Now from '../util';
import createOutput from '../util/output';
import logo from '../util/output/logo';
import elapsed from '../util/output/elapsed.ts';
import { maybeURL, normalizeURL, parseInstanceURL } from '../util/url';
import { maybeURL, normalizeURL } from '../util/url';
import printEvents from '../util/events';
import Client from '../util/client.ts';
import getScope from '../util/get-scope.ts';
@@ -16,7 +16,6 @@ const help = () => {
${chalk.dim('Options:')}
-h, --help Output usage information
-a, --all Include access logs
-A ${chalk.bold.underline('FILE')}, --local-config=${chalk.bold.underline(
'FILE'
)} Path to the local ${'`now.json`'} file
@@ -28,9 +27,6 @@ const help = () => {
-n ${chalk.bold.underline(
'NUMBER'
)} Number of logs [100]
-q ${chalk.bold.underline('QUERY')}, --query=${chalk.bold.underline(
'QUERY'
)} Search query
-t ${chalk.bold.underline('TOKEN')}, --token=${chalk.bold.underline(
'TOKEN'
)} Login token
@@ -65,23 +61,18 @@ export default async function main(ctx) {
let apiUrl;
let head;
let limit;
let query;
let follow;
let types;
let outputMode;
let since;
let until;
let instanceId;
argv = mri(ctx.argv.slice(2), {
string: ['query', 'since', 'until', 'output'],
boolean: ['help', 'all', 'debug', 'head', 'follow'],
string: ['since', 'until', 'output'],
boolean: ['help', 'debug', 'head', 'follow'],
alias: {
help: 'h',
all: 'a',
debug: 'd',
query: 'q',
follow: 'f',
output: 'o',
},
@@ -121,7 +112,7 @@ export default async function main(ctx) {
return 1;
}
[deploymentIdOrURL, instanceId] = parseInstanceURL(normalizedURL);
deploymentIdOrURL = normalizedURL;
}
debug = argv.debug;
@@ -129,10 +120,8 @@ export default async function main(ctx) {
head = argv.head;
limit = typeof argv.n === 'number' ? argv.n : 100;
query = argv.query || '';
follow = argv.f;
if (follow) until = 0;
types = argv.all ? [] : ['command', 'stdout', 'stderr', 'exit'];
outputMode = argv.output in logPrinters ? argv.output : 'short';
const {
@@ -204,9 +193,6 @@ export default async function main(ctx) {
const findOpts1 = {
direction,
limit,
query,
types,
instanceId,
since,
until,
}; // no follow
@@ -236,9 +222,6 @@ export default async function main(ctx) {
const since2 = lastEvent ? lastEvent.date : Date.now();
const findOpts2 = {
direction: 'forward',
query,
types,
instanceId,
since: since2,
follow: true,
};

View File

@@ -2,7 +2,6 @@ import chalk from 'chalk';
import table from 'text-table';
import mri from 'mri';
import ms from 'ms';
import plural from 'pluralize';
import strlen from '../util/strlen.ts';
import { handleError, error } from '../util/error';
import NowSecrets from '../util/secrets';
@@ -12,6 +11,8 @@ import Client from '../util/client.ts';
import getScope from '../util/get-scope.ts';
import createOutput from '../util/output';
import confirm from '../util/input/confirm';
import getCommandFlags from '../util/get-command-flags';
import cmd from '../util/output/cmd.ts';
const help = () => {
console.log(`
@@ -38,6 +39,7 @@ const help = () => {
'TOKEN'
)} Login token
-S, --scope Set a custom scope
-N, --next Show next page of results
${chalk.dim('Examples:')}
@@ -60,6 +62,12 @@ const help = () => {
)} symbol)
${chalk.cyan(`$ now -e MY_SECRET=${chalk.bold('@my-secret')}`)}
${chalk.gray('')} Paginate results, where ${chalk.dim(
'`1584722256178`'
)} is the time in milliseconds since the UNIX epoch.
${chalk.cyan(`$ now secrets ls --next 1584722256178`)}
`);
};
@@ -68,6 +76,7 @@ let argv;
let debug;
let apiUrl;
let subcommand;
let nextTimestamp;
const main = async ctx => {
argv = mri(ctx.argv.slice(2), {
@@ -76,6 +85,7 @@ const main = async ctx => {
help: 'h',
debug: 'd',
yes: 'y',
next: 'N',
},
});
@@ -84,6 +94,7 @@ const main = async ctx => {
debug = argv.debug;
apiUrl = ctx.apiUrl;
subcommand = argv._[0];
nextTimestamp = argv.next;
if (argv.help || !subcommand) {
help();
@@ -132,7 +143,7 @@ async function run({ output, token, contextName, currentTeam, ctx }) {
const start = Date.now();
if (subcommand === 'ls' || subcommand === 'list') {
if (args.length !== 0) {
if (args.length > 1) {
console.error(
error(
`Invalid number of arguments. Usage: ${chalk.cyan('`now secret ls`')}`
@@ -141,11 +152,11 @@ async function run({ output, token, contextName, currentTeam, ctx }) {
return exit(1);
}
const list = await secrets.ls();
const elapsed = ms(new Date() - start);
const { secrets: list, pagination } = await secrets.ls(nextTimestamp);
const elapsed = ms(Date.now() - start);
console.log(
`${plural('secret', list.length, true)} found under ${chalk.bold(
`${list.length > 0 ? 'Secrets' : 'No secrets'} found under ${chalk.bold(
contextName
)} ${chalk.gray(`[${elapsed}]`)}`
);
@@ -172,6 +183,19 @@ async function run({ output, token, contextName, currentTeam, ctx }) {
console.log(`\n${out}\n`);
}
}
if (pagination && pagination.count === 20) {
const prefixedArgs = getPrefixedFlags(argv);
const flags = getCommandFlags(prefixedArgs, [
'_',
'--next',
'-N',
'-d',
'-y',
]);
const nextCmd = `now secrets ${subcommand}${flags} --next ${pagination.next}`;
output.log(`To display the next page run ${cmd(nextCmd)}`);
}
return secrets.close();
}
@@ -186,8 +210,8 @@ async function run({ output, token, contextName, currentTeam, ctx }) {
);
return exit(1);
}
const list = await secrets.ls();
const theSecret = list.find(secret => secret.name === args[0]);
const theSecret = await secrets.getSecretByNameOrId(args[0]);
if (theSecret) {
const yes =
@@ -325,3 +349,28 @@ async function readConfirmation(output, secret, contextName) {
return confirm(`${chalk.bold.red('Are you sure?')}`, false);
}
/**
* This function adds a prefix `-` or `--` to the flags
* passed from the command line, because the package `mri`
* used to extract the args removes them for some reason.
*/
function getPrefixedFlags(args) {
const prefixedArgs = {};
for (const arg in args) {
if (arg === '_') {
prefixedArgs[arg] = argv[arg];
} else {
let prefix = '-';
// Full form flags need two dashes, whereas one letter
// flags need only one.
if (arg.length > 1) {
prefix = '--';
}
prefixedArgs[`${prefix}${arg}`] = argv[arg];
}
}
return prefixedArgs;
}

View File

@@ -40,7 +40,7 @@ const help = () => {
${chalk.gray(
''
)} If your team's url is 'zeit.co/teams/name', 'name' is the slug
)} If your team's url is 'vercel.com/teams/name', 'name' is the slug
${chalk.gray('')} If the slug is omitted, you can choose interactively
${chalk.yellow(

View File

@@ -33,7 +33,7 @@ const gracefulExit = () => {
return 0;
};
const teamUrlPrefix = rightPad('Team URL', 14) + chalk.gray('zeit.co/');
const teamUrlPrefix = rightPad('Team URL', 14) + chalk.gray('vercel.com/');
const teamNamePrefix = rightPad('Team Name', 14);
export default async function({ apiUrl, token, teams, config }) {
@@ -45,7 +45,7 @@ export default async function({ apiUrl, token, teams, config }) {
console.log(
info(
`Pick a team identifier for its url (e.g.: ${chalk.cyan(
'`zeit.co/acme`'
'`vercel.com/acme`'
)})`
)
);

Some files were not shown because too many files have changed in this diff Show More