roadtrips 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/index.js +155 -0
- package/package.json +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# road-trip 🛣️
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
\ | /
|
|
5
|
+
\ | / .-~~~~-.
|
|
6
|
+
\ | / .-~~ ~~-.
|
|
7
|
+
──────( ☀ )────── ( ~~clouds~~ )
|
|
8
|
+
/ | \ `-..,,______,,..-'
|
|
9
|
+
/ | \
|
|
10
|
+
/ | \
|
|
11
|
+
|
|
12
|
+
★
|
|
13
|
+
/\ /\
|
|
14
|
+
/ \ /\ / \
|
|
15
|
+
/ \ / \ /\ / \
|
|
16
|
+
/ /\ \ / /\ \ / \ / /\ \
|
|
17
|
+
/ / \ \ /\ / / \ \ /\ / /\ \ /\ / / \ \
|
|
18
|
+
/ / /\ \ \ / \ / / /\ \ \ / \ / / \ \ / \ / / /\ \ \
|
|
19
|
+
/__/_/__\_\__\/____\__/_/_/__\_\_\/____\/_/____\_\/____\____/__/_/__\_\__\
|
|
20
|
+
|
|
21
|
+
______________________
|
|
22
|
+
___/ ╔══════════════╗ \___
|
|
23
|
+
/ ║ road-trip ║ \
|
|
24
|
+
/_________╚══════════════╝________\
|
|
25
|
+
| .--. .--. |
|
|
26
|
+
'──( O )──────────────────( O )──'
|
|
27
|
+
`──' `──'
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
A scenic CLI package that sends you on a road trip down Norway's **Road 53** — right in your terminal! ✨
|
|
31
|
+
|
|
32
|
+
## Features
|
|
33
|
+
|
|
34
|
+
- 🌄 **Layered Norwegian scene** — sun, clouds, jagged snowy peaks, a car on the road, and a fjord below
|
|
35
|
+
- 🅡🅞🅐🅓 **ANSI-Shadow `ROAD 53` banner** — bold figlet block letters framed in a double-line box
|
|
36
|
+
- 🌅 **Five distinct gradient zones** — warm sunrise sky, cool alpine mountains, sunset banner, silver road, and deep-fjord blues
|
|
37
|
+
- 🚗 **Road trip borders** — scenic icons framing every print
|
|
38
|
+
- ✦ **70 short reflections from the road** — a different aphorism every run
|
|
39
|
+
- Quiet observations on fjords, weather, and slow travel
|
|
40
|
+
- Norway-specific notes (friluftsliv, midnight sun, ferries, switchbacks)
|
|
41
|
+
- Written to read more like an epigraph than a slogan
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install -g road-trip
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Usage
|
|
50
|
+
|
|
51
|
+
Simply run:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
road-trip
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Or use with npx without installing:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npx road-trip
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Example Output
|
|
64
|
+
|
|
65
|
+
Each run displays a short reflection from the road, such as:
|
|
66
|
+
|
|
67
|
+
- *"Tunnels feel like punctuation between paragraphs of light."*
|
|
68
|
+
- *"On Road 53, slow is its own kind of arrival."*
|
|
69
|
+
- *"Distance, in Norway, is measured in weather, not kilometers."*
|
|
70
|
+
- *"A switchback is a sentence with a comma where you didn't expect one."*
|
|
71
|
+
- *"The fjord doesn't perform; it persists."*
|
|
72
|
+
|
|
73
|
+
## License
|
|
74
|
+
|
|
75
|
+
MIT — Enjoy the open road! 🌄
|
package/index.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const gradient = require('gradient-string');
|
|
4
|
+
const chalk = require('chalk');
|
|
5
|
+
|
|
6
|
+
const skyArt = `
|
|
7
|
+
\\ | /
|
|
8
|
+
\\ | / .-~~~~-.
|
|
9
|
+
\\ | / .-~~ ~~-.
|
|
10
|
+
──────( ☀ )────── ( ~~clouds~~ )
|
|
11
|
+
/ | \\ \`-..,,______,,..-'
|
|
12
|
+
/ | \\
|
|
13
|
+
/ | \\
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
const mountainArt = `
|
|
17
|
+
★
|
|
18
|
+
/\\ /\\
|
|
19
|
+
/ \\ /\\ / \\
|
|
20
|
+
/ \\ / \\ /\\ / \\
|
|
21
|
+
/ /\\ \\ / /\\ \\ / \\ / /\\ \\
|
|
22
|
+
/ / \\ \\ /\\ / / \\ \\ /\\ / /\\ \\ /\\ / / \\ \\
|
|
23
|
+
/ / /\\ \\ \\ / \\ / / /\\ \\ \\ / \\ / / \\ \\ / \\ / / /\\ \\ \\
|
|
24
|
+
/__/_/__\\_\\__\\/____\\__/_/_/__\\_\\_\\/____\\/_/____\\_\\/____\\____/__/_/__\\_\\__\\
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
const bannerArt = `
|
|
28
|
+
═══════════════════════════════════════════════════════════════════════════════
|
|
29
|
+
╔═════════════════════════════════════════════════════════════════════════════╗
|
|
30
|
+
║ ║
|
|
31
|
+
║ ██████╗ ██████╗ █████╗ ██████╗ ███████╗██████╗ ║
|
|
32
|
+
║ ██╔══██╗██╔═══██╗██╔══██╗██╔══██╗ ██╔════╝╚════██╗ ║
|
|
33
|
+
║ ██████╔╝██║ ██║███████║██║ ██║ ███████╗ █████╔╝ ║
|
|
34
|
+
║ ██╔══██╗██║ ██║██╔══██║██║ ██║ ╚════██║ ╚═══██╗ ║
|
|
35
|
+
║ ██║ ██║╚██████╔╝██║ ██║██████╔╝ ███████║██████╔╝ ║
|
|
36
|
+
║ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═════╝ ║
|
|
37
|
+
║ ║
|
|
38
|
+
╚═════════════════════════════════════════════════════════════════════════════╝
|
|
39
|
+
═══════════════════════════════════════════════════════════════════════════════
|
|
40
|
+
`;
|
|
41
|
+
|
|
42
|
+
const roadArt = `
|
|
43
|
+
______________________
|
|
44
|
+
___/ ╔══════════════╗ \\___
|
|
45
|
+
/ ║ road-trip ║ \\
|
|
46
|
+
/_________╚══════════════╝________\\
|
|
47
|
+
| .--. .--. |
|
|
48
|
+
'──( O )──────────────────( O )──'
|
|
49
|
+
\`──' \`──'
|
|
50
|
+
|
|
51
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
52
|
+
── ─ ─ ─ ─ R O A D 5 3 ─ ─ ─ ─ ──
|
|
53
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
54
|
+
`;
|
|
55
|
+
|
|
56
|
+
const fjordArt = `
|
|
57
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
58
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
59
|
+
`;
|
|
60
|
+
|
|
61
|
+
const roadBorder = '🚗 🛣️ ⛽ 🌅 🛣️ 🚗 🌄 🛣️ ⛽ 🚗 🌅 🛣️ ';
|
|
62
|
+
|
|
63
|
+
const travelSentences = [
|
|
64
|
+
"The best maps are folded by hand and creased by use.",
|
|
65
|
+
"On Road 53, slow is its own kind of arrival.",
|
|
66
|
+
"A fjord rewards patience the way a good book rewards rereading.",
|
|
67
|
+
"Distance, in Norway, is measured in weather, not kilometers.",
|
|
68
|
+
"Some mountains are climbed; others are simply met.",
|
|
69
|
+
"Friluftsliv translates, but rarely transfers.",
|
|
70
|
+
"The wind off the fjord has opinions; learn to listen.",
|
|
71
|
+
"Tunnels feel like punctuation between paragraphs of light.",
|
|
72
|
+
"A ferry crossing is a small ceremony pretending to be transit.",
|
|
73
|
+
"The midnight sun teaches that endings are negotiable.",
|
|
74
|
+
"Travel light enough that the country can change you.",
|
|
75
|
+
"In Norway, 'almost there' is a unit of time, not space.",
|
|
76
|
+
"A switchback is a sentence with a comma where you didn't expect one.",
|
|
77
|
+
"The view pays back the climb at compound interest.",
|
|
78
|
+
"Pack for weather, not for forecasts.",
|
|
79
|
+
"The fjord doesn't perform; it persists.",
|
|
80
|
+
"Old roads tell better stories than new ones.",
|
|
81
|
+
"A cabin is a thesis defended in firewood and quiet.",
|
|
82
|
+
"The most honest souvenir is a habit you took home.",
|
|
83
|
+
"Norway invented patience and called it geography.",
|
|
84
|
+
"A reindeer crossing is not a delay; it's a footnote.",
|
|
85
|
+
"Trust the locals' directions — they include verbs the map doesn't.",
|
|
86
|
+
"A scenic detour pays its own toll.",
|
|
87
|
+
"On Road 53, the destination is where you finally exhale.",
|
|
88
|
+
"The mountains have been here longer than your itinerary.",
|
|
89
|
+
"A wool sweater is a working hypothesis about weather.",
|
|
90
|
+
"The fjord rehearses the sky and never rushes the line.",
|
|
91
|
+
"Some routes you choose; some choose you.",
|
|
92
|
+
"Map apps end at the trailhead; everything good begins there.",
|
|
93
|
+
"In a country this quiet, your own thoughts get a fair hearing.",
|
|
94
|
+
"Bring a question; the road will eventually rephrase it.",
|
|
95
|
+
"The best stretch of any road is the one you almost skipped.",
|
|
96
|
+
"Geology, here, is the slow art form.",
|
|
97
|
+
"Speed limits in Norway are also philosophical guidelines.",
|
|
98
|
+
"A bend in the road is an editor improving your day.",
|
|
99
|
+
"There is no rush on Road 53, only altitude.",
|
|
100
|
+
"A waterfall is what happens when a mountain finally exhales.",
|
|
101
|
+
"Norwegian rain is a punctuation mark, not a sentence.",
|
|
102
|
+
"Drive as if the landscape is reading you back.",
|
|
103
|
+
"A summit pause is not a stop; it's a margin note.",
|
|
104
|
+
"Every fjord is a long answer to a short question.",
|
|
105
|
+
"Modesty, here, is a feature of the terrain.",
|
|
106
|
+
"The good roads forgive impatience exactly once.",
|
|
107
|
+
"Listen for the silence inside the engine noise.",
|
|
108
|
+
"Take the picture, but remember also to take the moment.",
|
|
109
|
+
"The horizon recedes politely on Road 53.",
|
|
110
|
+
"Bring a thermos; bring fewer plans.",
|
|
111
|
+
"The sea here is older than rhetoric.",
|
|
112
|
+
"Cross a high pass and the day reorganizes its priorities.",
|
|
113
|
+
"Norway's quiet is not absence; it's attention.",
|
|
114
|
+
"There is a clarity that only mountain air can underwrite.",
|
|
115
|
+
"The road does not hurry, and arrives on time anyway.",
|
|
116
|
+
"A small village teaches scale better than any city.",
|
|
117
|
+
"Pay attention to what the wind keeps repeating.",
|
|
118
|
+
"There are conversations you can only have at altitude.",
|
|
119
|
+
"A long drive is a way of asking yourself a better question.",
|
|
120
|
+
"The route is a draft; the journey is the revision.",
|
|
121
|
+
"Forecast: scattered grace, with periods of clarity.",
|
|
122
|
+
"The silences are itinerary, too.",
|
|
123
|
+
"The road earns its reputation kilometer by kilometer.",
|
|
124
|
+
"Some destinations are better verbs for 'home.'",
|
|
125
|
+
"Sea level changes the meaning of every adjective you brought.",
|
|
126
|
+
"The fjord lets you measure yourself against something fair.",
|
|
127
|
+
"Stop where the light asks you to.",
|
|
128
|
+
"A roadside thermos is a small, defensible philosophy.",
|
|
129
|
+
"The most reliable compass points to what you cannot yet explain.",
|
|
130
|
+
"Coastlines, like good arguments, reward circling back.",
|
|
131
|
+
"A glacier is a long sentence the earth refuses to abridge.",
|
|
132
|
+
"The road's grammar is curves; learn its punctuation.",
|
|
133
|
+
"The country teaches you which questions deserve speed.",
|
|
134
|
+
];
|
|
135
|
+
|
|
136
|
+
const randomTravel = travelSentences[Math.floor(Math.random() * travelSentences.length)];
|
|
137
|
+
|
|
138
|
+
const skyGradient = gradient(['#fff1a8', '#ffb86b', '#ff6b35']);
|
|
139
|
+
const mountainGradient = gradient(['#e7f3ff', '#a8c5e8', '#5b7a99']);
|
|
140
|
+
const bannerGradient = gradient(['#ff6b35', '#ff3d7f', '#7a4cc8']);
|
|
141
|
+
const roadGradient = gradient(['#9ea3aa', '#d4d4d4', '#9ea3aa']);
|
|
142
|
+
const fjordGradient = gradient(['#2ec4b6', '#1d6f9c', '#103a63']);
|
|
143
|
+
const tagGradient = gradient(['#ffd700', '#ff8c00', '#ffd700']);
|
|
144
|
+
|
|
145
|
+
const message = `
|
|
146
|
+
${chalk.cyan(roadBorder)}
|
|
147
|
+
${skyGradient.multiline(skyArt)}${mountainGradient.multiline(mountainArt)}${bannerGradient.multiline(bannerArt)}${roadGradient.multiline(roadArt)}${fjordGradient.multiline(fjordArt)}
|
|
148
|
+
${chalk.italic.dim(' Notes from a road in western Norway.')}
|
|
149
|
+
|
|
150
|
+
${tagGradient(` ✦ ${randomTravel} ✦`)}
|
|
151
|
+
|
|
152
|
+
${chalk.cyan(roadBorder)}
|
|
153
|
+
`;
|
|
154
|
+
|
|
155
|
+
console.log(message);
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "roadtrips",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "A scenic CLI journey along Road 53 through Norway",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"road-trip": "./index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"road-trip",
|
|
14
|
+
"norway",
|
|
15
|
+
"road-53",
|
|
16
|
+
"travel",
|
|
17
|
+
"fjord",
|
|
18
|
+
"scenic",
|
|
19
|
+
"highway",
|
|
20
|
+
"adventure",
|
|
21
|
+
"cli"
|
|
22
|
+
],
|
|
23
|
+
"author": "",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/danmindru/road-trip"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"chalk": "^4.1.2",
|
|
31
|
+
"gradient-string": "^2.0.2"
|
|
32
|
+
}
|
|
33
|
+
}
|