chore(style): add shebang, set bash strict mode, create function
[webi-installers/.git] / node / README.md
index 828dfae7ee854e860b35f1dc2eda945cbf534668..bfbd5b32ed77593b78f0c48be4e3a2e458ad336a 100644 (file)
@@ -5,19 +5,14 @@ tagline: |
   Node.jsĀ® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
 ---
 
-## Updating `node`
-
-```bash
-webi node@stable
-```
-
-Use `@lts` for long-term support and the `@beta` tag for pre-releases, or
-`@x.y.z` for a specific version.
+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.
+Node is great for simple, snappy HTTP(S) servers, and for stitching APIs
+together with minimal fuss or muss.
 
 Installing node via webi will:
 
@@ -27,7 +22,7 @@ Installing node via webi will:
 - 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 permisions alone
+- absolutely leave system file permissions alone
   - (no dreaded `sudo npm` permission errors)
 
 ### Hello World
@@ -55,11 +50,26 @@ http.createServer(app).listen(8080, function () {
 node server.js
 ```
 
+### 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
 ```