add webi dat dat dat
[webi-installers/.git] / node / README.md
1 ---
2 title: Node.js
3 homepage: https://nodejs.org
4 tagline: |
5   Node.jsĀ® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
6 ---
7
8 ## Updating `node`
9
10 ```bash
11 webi node@stable
12 ```
13
14 Use `@lts` for long-term support and the `@beta` tag for pre-releases, or
15 `@x.y.z` for a specific version.
16
17 ## Cheat Sheet
18
19 Node is great for simple, snappy HTTP(S) servers, and for stitching APIs
20 together with minimal fuss or muss.
21
22 Installing node via webi will:
23
24 - pick a compatible version from the
25   [Node Releases API](https://nodejs.org/dist/index.tab)
26 - download and unpack to `$HOME/.local/opt/node/`
27 - update your `PATH` in `$HOME/.config/envman/PATH.env`
28 - run `npm config set scripts-prepend-node-path=true`
29   - (prevents conflicts with other installed node versions)
30 - absolutely leave system file permisions alone
31   - (no dreaded `sudo npm` permission errors)
32
33 ### Hello World
34
35 ```bash
36 node -e 'console.log("Hello, World!")'
37 > Hello, World!
38 ```
39
40 ### A Simple Web Server
41
42 `server.js`:
43
44 ```bash
45 var http = require('http');
46 var app = function (req, res) {
47   res.end('Hello, World!');
48 };
49 http.createServer(app).listen(8080, function () {
50   console.info('Listening on', this.address());
51 });
52 ```
53
54 ```bash
55 node server.js
56 ```
57
58 ### An Express App
59
60 ```bash
61 mkdir my-server
62 pushd my-server
63 npm init
64 npm install --save express
65 ```
66
67 `app.js`:
68
69 ```js
70 'use strict';
71
72 var express = require('express');
73 var app = express();
74
75 app.use('/', function (req, res, next) {
76   res.end('Hello, World!');
77 });
78
79 module.exports = app;
80 ```
81
82 `server.js`:
83
84 ```js
85 'use strict';
86
87 var http = require('http');
88 var app = require('./app.js');
89
90 http.createServer(app).listen(8080, function () {
91   console.info('Listening on', this.address());
92 });
93 ```
94
95 ```bash
96 npm start
97 ```