docs: update node version switching to match example
[webi-installers/.git] / node / README.md
index 7a8e6d0cb7c300cdd3eaabdf805489d29cef3a10..bd80d10b50d325145d0ccd108c9af0c2df22cf03 100644 (file)
@@ -3,18 +3,36 @@ title: Node.js
 homepage: https://nodejs.org
 tagline: |
   Node.jsĀ® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
-description: |
-  Node is great for simple, snappy HTTP(S) servers, and for stitching APIs together with minimal fuss or muss.
 ---
 
-Hello World
+To update or switch versions, run `webi node@<tag>`. \
+(you can use `@lts` for long-term support, `@beta` for pre-releases, or `@x.y.z`
+for a specific version)
+
+## Cheat Sheet
+
+> Node is great for simple, snappy HTTP(S) servers, and for stitching APIs
+> together with minimal fuss or muss.
+
+Installing node via webi will:
+
+- pick a compatible version from the
+  [Node Releases API](https://nodejs.org/dist/index.tab)
+- download and unpack to `$HOME/.local/opt/node/`
+- update your `PATH` in `$HOME/.config/envman/PATH.env`
+- run `npm config set scripts-prepend-node-path=true`
+  - (prevents conflicts with other installed node versions)
+- absolutely leave system file permissions alone
+  - (no dreaded `sudo npm` permission errors)
+
+### Hello World
 
 ```bash
 node -e 'console.log("Hello, World!")'
 > Hello, World!
 ```
 
-A Simple Web Server
+### A Simple Web Server
 
 `server.js`:
 
@@ -32,11 +50,26 @@ http.createServer(app).listen(8080, function () {
 node server.js
 ```
 
-An Express App
+### Generate a Secure Random Key
+
+This generates a hex-encoded 128-bit random key.
+
+```bash
+node -p 'crypto.randomBytes(16).toString("hex")'
+```
+
+This generates a url-safe base64 256-bit random key.
+
+```bash
+node -p 'crypto.randomBytes(32).toString("base64")
+            .replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "")'
+```
+
+### An Express App
 
 ```bash
 mkdir my-server
-pushd my-server
+pushd my-server/
 npm init
 npm install --save express
 ```
@@ -49,11 +82,11 @@ npm install --save express
 var express = require('express');
 var app = express();
 
-app.use('/', function (req, res, next) {
-  res.end("Hello, World!");
+app.use('/', function(req, res, next) {
+  res.end('Hello, World!');
 });
 
-module.exports = app;</code></pre>
+module.exports = app;
 ```
 
 `server.js`:
@@ -64,7 +97,7 @@ module.exports = app;</code></pre>
 var http = require('http');
 var app = require('./app.js');
 
-http.createServer(app).listen(8080, function () {
+http.createServer(app).listen(8080, function() {
   console.info('Listening on', this.address());
 });
 ```