This repository was archived by the owner on May 15, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +173
-0
lines changed Expand file tree Collapse file tree 5 files changed +173
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ display_name : nodejs
3
+ description : Install Node.js via nvm
4
+ icon : ../.icons/node.svg
5
+ maintainer_github : TheZoker
6
+ verified : false
7
+ tags : [helper]
8
+ ---
9
+
10
+ # nodejs
11
+
12
+ Automatically installs [ Node.js] ( https://github.com/nodejs/node ) via [ nvm] ( https://github.com/nvm-sh/nvm ) . It can also install multiple versions of node and set a default version. If no options are specified, the latest version is installed.
13
+
14
+ ``` tf
15
+ module "nodejs" {
16
+ source = "registry.coder.com/modules/nodejs/coder"
17
+ version = "1.0.2"
18
+ agent_id = coder_agent.example.id
19
+ }
20
+ ```
21
+
22
+ ### Install multiple versions
23
+
24
+ This installs multiple versions of Node.js:
25
+
26
+ ``` tf
27
+ module "nodejs" {
28
+ source = "registry.coder.com/modules/nodejs/coder"
29
+ version = "1.0.2"
30
+ agent_id = coder_agent.example.id
31
+ node_versions = [
32
+ "18",
33
+ "20",
34
+ "node"
35
+ ]
36
+ default_node_version = "20"
37
+ }
38
+ ```
39
+
40
+ ### Full example
41
+
42
+ A example with all available options:
43
+
44
+ ``` tf
45
+ module "nodejs" {
46
+ source = "registry.coder.com/modules/nodejs/coder"
47
+ version = "1.0.2"
48
+ agent_id = coder_agent.example.id
49
+ nvm_version = "v0.39.7"
50
+ nvm_install_prefix = "/opt/nvm"
51
+ node_versions = [
52
+ "16",
53
+ "18",
54
+ "node"
55
+ ]
56
+ default_node_version = "16"
57
+ }
58
+ ```
Original file line number Diff line number Diff line change
1
+ import { describe , expect , it } from "bun:test" ;
2
+ import { runTerraformInit , testRequiredVariables } from "../test" ;
3
+
4
+ describe ( "nodejs" , async ( ) => {
5
+ await runTerraformInit ( import . meta. dir ) ;
6
+
7
+ testRequiredVariables ( import . meta. dir , {
8
+ agent_id : "foo" ,
9
+ } ) ;
10
+
11
+ // More tests depend on shebang refactors
12
+ } ) ;
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ required_version = " >= 1.0"
3
+
4
+ required_providers {
5
+ coder = {
6
+ source = " coder/coder"
7
+ version = " >= 0.12"
8
+ }
9
+ }
10
+ }
11
+
12
+ variable "agent_id" {
13
+ type = string
14
+ description = " The ID of a Coder agent."
15
+ }
16
+
17
+ variable "nvm_version" {
18
+ type = string
19
+ description = " The version of nvm to install."
20
+ default = " master"
21
+ }
22
+
23
+ variable "nvm_install_prefix" {
24
+ type = string
25
+ description = " The prefix to install nvm to."
26
+ default = " $HOME/.nvm"
27
+ }
28
+
29
+ variable "node_versions" {
30
+ type = list (string )
31
+ description = " A list of Node.js versions to install."
32
+ default = [" node" ]
33
+ }
34
+
35
+ variable "default_node_version" {
36
+ type = string
37
+ description = " The default Node.js version"
38
+ default = " node"
39
+ }
40
+
41
+ resource "coder_script" "nodejs" {
42
+ agent_id = var. agent_id
43
+ display_name = " Node.js:"
44
+ script = templatefile (" ${ path . module } /run.sh" , {
45
+ NVM_VERSION : var.nvm_version,
46
+ INSTALL_PREFIX : var.nvm_install_prefix,
47
+ NODE_VERSIONS : join (" ," , var. node_versions ),
48
+ DEFAULT : var.default_node_version,
49
+ })
50
+ run_on_start = true
51
+ start_blocks_login = true
52
+ }
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+
3
+ NVM_VERSION=' ${NVM_VERSION}'
4
+ NODE_VERSIONS=' ${NODE_VERSIONS}'
5
+ INSTALL_PREFIX=' ${INSTALL_PREFIX}'
6
+ DEFAULT=' ${DEFAULT}'
7
+ BOLD=' \033[0;1m'
8
+ CODE=' \033[36;40;1m'
9
+ RESET=' \033[0m'
10
+
11
+ printf " $$ {BOLD}Installing nvm!$$ {RESET}\n"
12
+
13
+ export NVM_DIR=" $$ {INSTALL_PREFIX}/nvm"
14
+
15
+ script=" $( curl -sS -o- " https://raw.githubusercontent.com/nvm-sh/nvm/$$ {NVM_VERSION}/install.sh" 2>&1 ) "
16
+ if [ $? -ne 0 ]; then
17
+ echo " Failed to download nvm installation script: $script "
18
+ exit 1
19
+ fi
20
+
21
+ output=" $( bash <<< " $script" 2>&1 ) "
22
+ if [ $? -ne 0 ]; then
23
+ echo " Failed to install nvm: $output "
24
+ exit 1
25
+ fi
26
+
27
+ printf " 🥳 nvm has been installed\n\n"
28
+
29
+ # Set up nvm for the rest of the script.
30
+ [ -s " $NVM_DIR /nvm.sh" ] && . " $NVM_DIR /nvm.sh"
31
+
32
+ # Install each node version...
33
+ IFS=' ,' read -r -a VERSIONLIST <<< " $${NODE_VERSIONS}"
34
+ for version in " $$ {VERSIONLIST[@]}" ; do
35
+ if [ -z " $version " ]; then
36
+ continue
37
+ fi
38
+ printf " 🛠️ Installing node version $$ {CODE}$version $$ {RESET}...\n"
39
+ output=$( nvm install " $version " 2>&1 )
40
+ if [ $? -ne 0 ]; then
41
+ echo " Failed to install version: $version : $output "
42
+ exit 1
43
+ fi
44
+ done
45
+
46
+ # Set default if provided
47
+ if [ -n " $$ {DEFAULT}" ]; then
48
+ printf " 🛠️ Setting default node version $$ {CODE}$DEFAULT $$ {RESET}...\n"
49
+ output=$( nvm alias default $DEFAULT 2>&1 )
50
+ fi
You can’t perform that action at this time.
0 commit comments