Use Zeit’s now
to deploy a node application from your local machine to a remote cloud service in moments.
Install:
npm i -g now
Deploy:
now
The url it generates contains two part, the first part is the application name, and the second part is generated according to your application current state (code) and package.json. If you deploy this package against this code, using now, that‘s the URL that you get. I can show you that that‘s true by running ZEIT now again.
If I run Now again, we‘re not going to see it do npm install and npm run build and npm start, it‘s actually just going to give us the same URL again. This is using a certain property of immutable data structures.
It‘s actually saying that this deployed instance is like a pure function of this particular named project with the current state of this code. No matter how many times I deploy the current state, it‘s always going to return the same deployment instance that I can get to via that URL.
If code changed, when we deploy again, it will genrate a new url, but the old one is still available!.
Now offers a nice little escape hatch here. If we define a script called start, and a script called now start, then when we‘ve run it on Now, it‘ll ignore start and it‘ll run now start. The same for build, if we define a now build, echo now build step went here.
"scripts": { "start": "node index.js", // run this in local "now-start": "node index.js", // in server, will run this instead of "start" "build": "echo ‘BUILD STEP GOES HERE‘", // run in local "now-build": "echo ‘NOW BUILD STEP WENT HERE!‘", // run in server "test": "echo \"Error: no test specified\" && exit 1" },
If you want your dev to run with certain environment variables, for instance, and your prod to run with other ones or something like that, we can dig a little bit more deeper into that in future lessons. There is an escape hatch, and there is a way for you to have Now specific start in build scripts.