diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx
index a4839ae966f42..7c477f1bb44d2 100644
--- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx
+++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx
@@ -1,7 +1,7 @@
'use client';
import { useTranslations } from 'next-intl';
-import { useContext, useEffect, useMemo } from 'react';
import type { FC } from 'react';
+import { useContext, useEffect, useMemo } from 'react';
import Select from '@/components/Common/Select';
import Choco from '@/components/Icons/Platform/Choco';
@@ -9,6 +9,7 @@ import Docker from '@/components/Icons/Platform/Docker';
import FNM from '@/components/Icons/Platform/FNM';
import Homebrew from '@/components/Icons/Platform/Homebrew';
import NVM from '@/components/Icons/Platform/NVM';
+import Proto from '@/components/Icons/Platform/Proto';
import { ReleaseContext } from '@/providers/releaseProvider';
import type { PackageManager } from '@/types/release';
import { formatDropdownItems, platformItems } from '@/util/downloadUtils';
@@ -73,6 +74,7 @@ const PlatformDropdown: FC = () => {
BREW: ,
DOCKER: ,
CHOCO: ,
+ PROTO: ,
},
disabledItems,
})}
diff --git a/apps/site/components/Icons/Platform/Proto.tsx b/apps/site/components/Icons/Platform/Proto.tsx
new file mode 100644
index 0000000000000..67d71dd6e8a72
--- /dev/null
+++ b/apps/site/components/Icons/Platform/Proto.tsx
@@ -0,0 +1,19 @@
+import type { FC, SVGProps } from 'react';
+
+const Proto: FC> = props => (
+
+);
+
+export default Proto;
diff --git a/apps/site/i18n/locales/en.json b/apps/site/i18n/locales/en.json
index 8b20d7964f6ef..680c6eb9885dd 100644
--- a/apps/site/i18n/locales/en.json
+++ b/apps/site/i18n/locales/en.json
@@ -304,7 +304,7 @@
"activateFNM": "activate fnm",
"noteWithColon": "NOTE:",
"dockerIsNotNodejsPackageManager": "Docker is not a Node.js package manager.",
- "PleaseEndureAlreadyInstallOnSystem": "Please ensure it is already installed on your system.",
+ "PleaseEnsureAlreadyInstallOnSystem": "Please ensure it is already installed on your system.",
"dockerInstructions": "Follow official instructions at https://docs.docker.com/desktop/",
"dockerImagesLink": "Docker images are provided officially at https://github.com/nodejs/docker-node/",
"pullsNodejsDockerImage": "pulls the Node.js Docker image",
@@ -313,7 +313,8 @@
"homebrewSupportsIntallingMajorNodejsVersion": "Homebrew only supports installing major Node.js versions and might not support the latest Node.js version from the {version} release line.",
"chocolateyIsNotNodejsPackageManager": "Chocolatey is not a Node.js package manager.",
"chocolateyInstructions": "Follow official instructions at https://chocolatey.org/",
- "chocolateyNotMaintanedByNodejs": "Chocolatey is not officially maintained by the Node.js project and might not support the {version} version of Node.js"
+ "chocolateyNotMaintanedByNodejs": "Chocolatey is not officially maintained by the Node.js project and might not support the {version} version of Node.js",
+ "protoInstructions": "Follow official instructions at https://moonrepo.dev/docs/proto/install"
}
}
}
diff --git a/apps/site/pages/en/download/package-manager/all.md b/apps/site/pages/en/download/package-manager/all.md
index 3feb29f9c26ad..ee01cc44572e0 100644
--- a/apps/site/pages/en/download/package-manager/all.md
+++ b/apps/site/pages/en/download/package-manager/all.md
@@ -9,31 +9,40 @@ title: Installing Node.js via package manager
---
-- [Alpine Linux](#alpine-linux)
-- [Android](#android)
-- [Arch Linux](#arch-linux)
-- [CentOS, Fedora and Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux)
-- [Debian and Ubuntu based Linux distributions](#debian-and-ubuntu-based-linux-distributions)
-- [Exherbo Linux](#exherbo-linux)
-- [fnm](#fnm)
-- [FreeBSD](#freebsd)
-- [Gentoo](#gentoo)
-- [IBM i](#ibm-i)
-- [macOS](#macos)
-- [n](#n)
-- [NetBSD](#netbsd)
-- [Nodenv](#nodenv)
-- [nvm](#nvm)
-- [nvs](#nvs)
-- [OpenBSD](#openbsd)
-- [openSUSE and SLE](#opensuse-and-sle)
-- [SmartOS and illumos](#smartos-and-illumos)
-- [Snap](#snap)
-- [Solus](#solus)
-- [vfox](#vfox)
-- [Void Linux](#void-linux)
-- [Windows](#windows-1)
-- [z/OS](#zos)
+- [Installing Node.js via Package Managers](#installing-nodejs-via-package-managers)
+ - [Alpine Linux](#alpine-linux)
+ - [Android](#android)
+ - [Arch Linux](#arch-linux)
+ - [CentOS, Fedora and Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux)
+ - [Alternatives](#alternatives)
+ - [Debian and Ubuntu based Linux distributions](#debian-and-ubuntu-based-linux-distributions)
+ - [Alternatives](#alternatives-1)
+ - [Exherbo Linux](#exherbo-linux)
+ - [fnm](#fnm)
+ - [FreeBSD](#freebsd)
+ - [Gentoo](#gentoo)
+ - [IBM i](#ibm-i)
+ - [macOS](#macos)
+ - [Alternatives](#alternatives-2)
+ - [n](#n)
+ - [NetBSD](#netbsd)
+ - [Nodenv](#nodenv)
+ - [nvm](#nvm)
+ - [nvs](#nvs)
+ - [Windows](#windows)
+ - [macOS,UnixLike](#macosunixlike)
+ - [Usage](#usage)
+ - [OpenBSD](#openbsd)
+ - [openSUSE and SLE](#opensuse-and-sle)
+ - [proto](#proto)
+ - [SmartOS and illumos](#smartos-and-illumos)
+ - [Snap](#snap)
+ - [Solus](#solus)
+ - [vfox](#vfox)
+ - [Void Linux](#void-linux)
+ - [Windows](#windows-1)
+ - [Alternatives](#alternatives-3)
+ - [z/OS](#zos)
---
@@ -96,7 +105,7 @@ dnf module install nodejs:18/common
These resources provide packages compatible with CentOS, Fedora, and RHEL.
-- [Node.js snaps](#snap) maintained and supported at https://github.com/nodejs/snap
+- [Node.js snaps](#snap) maintained and supported at
- [Node.js binary distributions](#debian-and-ubuntu-based-linux-distributions) maintained and supported by [NodeSource](https://github.com/nodesource/distributions)
## Debian and Ubuntu based Linux distributions
@@ -344,6 +353,23 @@ zypper install nodejs14
Different major versions of Node can be installed and used concurrently.
+## proto
+
+[proto](https://moonrepo.dev/proto) is a pluggable version manager, a unified toolchain. [proto](https://moonrepo.dev/proto) was designed to be a modern and holistic version manager for all of your favorite programming languages. Supports Bun, Deno, Node (npm, pnpm, yarn), Rust, Go, and more.
+
+Here's how to install Node.js using [proto](https://moonrepo.dev/proto):
+
+```bash
+# LTS
+proto install node lts
+# Current
+proto install node
+# Specific version
+proto install node 18.20.4
+```
+
+Read the [documentation](https://moonrepo.dev/docs/proto) for more information.
+
## SmartOS and illumos
SmartOS images come with pkgsrc pre-installed. On other illumos distributions, first install **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, then you may install the binary package as normal:
diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts
index b1e794e940c8c..25c864b0009fd 100644
--- a/apps/site/types/release.ts
+++ b/apps/site/types/release.ts
@@ -3,7 +3,13 @@ import type { ReactNode } from 'react';
import type { NodeRelease } from '@/types/releases';
import type { UserOS } from '@/types/userOS';
-export type PackageManager = 'NVM' | 'FNM' | 'BREW' | 'DOCKER' | 'CHOCO';
+export type PackageManager =
+ | 'NVM'
+ | 'FNM'
+ | 'BREW'
+ | 'DOCKER'
+ | 'CHOCO'
+ | 'PROTO';
export interface ReleaseState {
os: UserOS;
diff --git a/apps/site/util/downloadUtils.ts b/apps/site/util/downloadUtils.ts
index 9a63c751a10e7..58e22472173f9 100644
--- a/apps/site/util/downloadUtils.ts
+++ b/apps/site/util/downloadUtils.ts
@@ -15,6 +15,7 @@ export enum PackageManagerLabel {
BREW = 'Brew',
CHOCO = 'Chocolatey',
DOCKER = 'Docker',
+ PROTO = 'Proto',
}
export const operatingSystemItems = [
@@ -57,6 +58,10 @@ export const platformItems = [
label: PackageManagerLabel.DOCKER,
value: 'DOCKER' as PackageManager,
},
+ {
+ label: PackageManagerLabel.PROTO,
+ value: 'PROTO' as PackageManager,
+ },
];
export const bitnessItems = {
diff --git a/apps/site/util/getNodeDownloadSnippet.ts b/apps/site/util/getNodeDownloadSnippet.ts
index a509ebcc558aa..f3e9b8bc62bda 100644
--- a/apps/site/util/getNodeDownloadSnippet.ts
+++ b/apps/site/util/getNodeDownloadSnippet.ts
@@ -16,13 +16,14 @@ export const getNodeDownloadSnippet = (
BREW: '',
DOCKER: '',
CHOCO: '',
+ PROTO: '',
};
if (os === 'WIN' || os === 'MAC' || os === 'LINUX') {
snippets.DOCKER = dedent`
# ${t('layouts.download.codeBox.noteWithColon')}
# ${t('layouts.download.codeBox.dockerIsNotNodejsPackageManager')}
- # ${t('layouts.download.codeBox.PleaseEndureAlreadyInstallOnSystem')}
+ # ${t('layouts.download.codeBox.PleaseEnsureAlreadyInstallOnSystem')}
# ${t('layouts.download.codeBox.dockerInstructions')}
# ${t('layouts.download.codeBox.dockerImagesLink')}
@@ -34,6 +35,20 @@ export const getNodeDownloadSnippet = (
# ${t('layouts.download.codeBox.verifiesRightNpmVersion')}
docker run node:${release.major}-${release.major >= 4 ? 'alpine' : 'slim'} npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`;
+
+ snippets.PROTO = dedent`
+ # ${t('layouts.download.codeBox.noteWithColon')}
+ # ${t('layouts.download.codeBox.PleaseEnsureAlreadyInstallOnSystem')}
+ # ${t('layouts.download.codeBox.protoInstructions')}
+
+ # ${t('layouts.download.codeBox.downloadAndInstallNodejs')}
+ proto install node ${release.major}
+
+ # ${t('layouts.download.codeBox.verifiesRightNodejsVersion')}
+ node -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.versionWithPrefix })}
+
+ # ${t('layouts.download.codeBox.verifiesRightNpmVersion')}
+ npm -v # ${t('layouts.download.codeBox.shouldPrint', { version: release.npm })}`;
}
if (os === 'MAC' || os === 'LINUX') {
@@ -69,7 +84,7 @@ export const getNodeDownloadSnippet = (
snippets.BREW = dedent`
# ${t('layouts.download.codeBox.noteWithColon')}
# ${t('layouts.download.codeBox.homebrewIsNotNodejsPackageManager')}
- # ${t('layouts.download.codeBox.PleaseEndureAlreadyInstallOnSystem')}
+ # ${t('layouts.download.codeBox.PleaseEnsureAlreadyInstallOnSystem')}
# ${t('layouts.download.codeBox.homebrewInstructions')}
# ${t('layouts.download.codeBox.homebrewSupportsIntallingMajorNodejsVersion', { version: release.major })}
@@ -103,7 +118,7 @@ export const getNodeDownloadSnippet = (
snippets.CHOCO = dedent`
# ${t('layouts.download.codeBox.noteWithColon')}
# ${t('layouts.download.codeBox.chocolateyIsNotNodejsPackageManager')}
- # ${t('layouts.download.codeBox.PleaseEndureAlreadyInstallOnSystem')}
+ # ${t('layouts.download.codeBox.PleaseEnsureAlreadyInstallOnSystem')}
# ${t('layouts.download.codeBox.chocolateyInstructions')}
# ${t('layouts.download.codeBox.chocolateyNotMaintanedByNodejs', { version: release.versionWithPrefix })}