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
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:
- Simpler installation for non-Node users like those deploying [static files](https://zeit.co/blog/unlimited-static) or [Dockerfiles](https://zeit.co/blog/now-dockerfile).
- Consistency across platforms and installation mechanisms (`npm`, `brew` and manual scripts)
- Parsing and evaluation optimizations lead to a faster bootup time
- Easier installation in automation environments (like CI systems)
- Increased safety by providing a unified signature mechanism for releases
- We're able to select our own Node version of choice and can take advantage of the latest features
## Caught a Bug?
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
2. Link the package to the global module directory: `npm run link` (not `npm link`)
3. You can now start using `now` from the command line!
As always, you can use `npm test` to run the tests and see if your changes have broken anything.