Global configuration is stored as `~/.now/config.json`. Your default provider will be the first one you log in to. If you are logged into multiple providers and want to set default provider, run:
To skip the configuration steps and deploy to `https://now.sh`
execute `now login` without any parameters, defaulting to the `sh` provider (equivalent to: `now sh login`).
[Now.sh](https://zeit.co/now) is _**free** for open-source projects and static deployments_. It supports `Dockerfile`, `package.json` and static sites out of the box. All builds are reproducible and executed in the cloud.
### AWS Lambda (`aws`)
Run:
```
now aws login
```
If you have already run `aws configure` before, you will be offered
<td>ℹ️</td><td>We welcome feedback from <ahref="#community">the community</a>!</td>
</table>
The v1 release of `now.json` includes the following specification:
-`name` (optional, recommended) `String`
-`description` (optional, recommended) `String`
-`type` (optional, recommended). One of:
-`String` an unique identifier for the project type. The following
are recommended choices to be supported by every provider:
-`docker`
-`nodejs`
-`static`
-`Object`
when it's necessary to specify a version or multiple interacting runtimes. It's a dictionary of runtime identifier and [SemVer-compatible]() version. For example:
```
{ "type": { "docker": "1.x.x" } }
```
-`provider` (optional) indicates affinity to a certain provider
-`target` (optional) `String`
- specifies a directory or file to deploy. If relative, it's resolved
to the project directory. This is useful when a certain
deployment type (like `static`) has an output target, like an `out`
or `dist` directory.
-`env` (optional). One of
-`Object` a dictionary mapping the name of the environmental variable
The client will initialize a `.now` directory in the user's home
directory upon first running.
There, two files can be found:
-`config.json`
-`credentials.json`
## Implementation notes
Now is directly modeled after UNIX. It's useful to think of the primary subcommands `deploy`, `alias` and `rm` as being the "cloud equivalents" of `cp`, `ln` and `rm`.
The minimal set of commands that providers must supply are:
The `build` step for serverless deployments is implemented locally and is compatible with projects configured with the `type``nodejs`, and others are on the way!
Each time you write `now` a new deployment is provisioned. Whenever
possible, providers should strive to make deployments idempotent in the
absence of changes to:
- Originating source code
- Configuration
- Environment variables
### Standards compliance
All projects expose a HTTP/1.1-compatible interface. A port is provided
via the standard `process.env.PORT`.
### Secure
Whenever possible, deployments are strongly encouraged to be served over SSL. The process of provisioning certificates should be transparent to the user.
### Projects should require minimal JSON configuration
Whenever possible, projects should be deployable with minimal or no configuration.
### Avoid manifest duplication
If the configuration or conventions imposed by a programming language
or framework are present, attempt to provide sane defaults.
Examples of this is the presence of `Dockerfile` or `package.json`. When
publishing a project it's recommended that the [`type`](#type) is strictly
- 💬 Chat: Join us on [zeit.chat](https://zeit.chat) `#now-client`.
- 📣 Stay up to date on new features and announcments on [@zeithq](https://twitter.com/zeithq).
- 🔐 Subscribe to our [security](http://zeit.us12.list-manage1.com/subscribe?u=3c9e9e13d7e6dae8faf375bed&id=110e586914) mailing list to stay up-to-date on urgent security disclosures.
Please note: we adhere to the [contributor coventant](http://contributor-covenant.org/) for
all interactions in our community.
#### Contributions
To get started contributing, make sure you're running `node``8.x.x`. Clone this repository:
```
git clone https://github.com/zeit/now
```
To test the [`pkg`](https://github.com/zeit/pkg) binary distribution, run:
```
npm run build
```
#### Ongoing development
- Support for `now <file>`, with support for:
- Binaries as a first-class deployment type
- Static deployments as a fallback
- We are working on built-in support for provisioning [Kubernetes](https://kubernetes.io/)
replication controllers and pods, in a similar vein as the [Draft](https://github.com/azure/draft) project.
- A simple API to register custom providers and pluggable build systems externally, such as Travis, Circle CI, etc.
- A companion desktop app [Now Desktop](https://github.com/zeit/now-desktop)
is available, released under the MIT license.
Work is ongoing for pluggable providers to enable:
- Team collaboration
- One-click context switch
- Drag and drop deployments
- Adding interoperabity between objects that live in different providers
- Providing a Next.js and React powered dashboard that can be deployed anywhere