Fast, disk space efficient package manager | pnpm
# Node.js 버전 확인
➜ node -v
v20.9.0
# v20.9.0 가 설치되어 있지 않다면
➜ nvm install 20.9.0
# v20.9.0 를 사용하고 있지 않다면
➜ nvm use 20.9.0
# Node.js 버전 다시 확인
➜ node -v
v20.9.0
# npm 버전 확인
➜ npm -v
10.2.1
# 최신 버전 npm 으로 업그레이드
➜ npm i [email protected] -g
# npm 버전 다시 확인
➜ npm -v
10.2.1
# pnpm 설치 확인 및 버전 확인
➜ pnpm -v
8.10.0
# 최신 버전 pnpm 으로 업그레이드
➜ npm i [email protected] -g
# pnpm 설치 다시 확인 및 버전 다시 확인
➜ pnpm -v
8.10.0
➜ mkdir pnpm-workspaces-example
➜ cd pnpm-workspaces-example
➜ corepack enable
➜ pnpm init
➜ corepack use [email protected]
➜ cat package.json
➜ yarn
{
"name": "pnpm-workspaces-example",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"packageManager": "[email protected]+sha1.77d568bacf41eeefd6695a7087c1282433955b5c"
}
➜ mkdir packages packages/a packages/b
➜ cd package/a
➜ pnpm init
➜ cd ../b
➜ pnpm init
➜ cd ...
➜ code .
# pnpm-workspace.yaml
packages:
- "packages/*"
➜ pnpm --filter a add axios
// pnpm-workspaces-example/package-b/index.js
const axios = require("axios");
module.exports = async function () {
const response = await axios.get("<https://api.github.com/users>");
return response.data;
};
// pnpm-workspaces-example/package-a/index.js
const b = require("b");
(async function main() {
const users = await b();
console.log(users.map((user) => user.login).join(", "));
})();
{
"name": "a",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^1.6.0"
}
}