Skip to content

pnpm add <package>

เพิ่ม package

sh
pnpm add vite
Optionsคำอธิบาย
pnpm add <package_name> --save-prod หรือ -Pเพิ่มเป็น production dependency
pnpm add <package_name> --save-dev หรือ -Dเพิ่มเป็น development dependency
pnpm add <package_name> --save-optional หรือ -Oเพิ่มเป็น optional dependency
pnpm add <package_name> --save-exact หรือ -Eบันทึกเวอร์ชันแบบแน่นอน ไม่ใช้เครื่องหมาย ^
pnpm add <package_name> --save-peerเพิ่มเป็น peer dependency
pnpm add <package_name> --ignore-workspace-root-checkอนุญาตให้เพิ่ม dependencies ใน root ของ workspace
pnpm add <package_name> --global หรือ -gติดตั้งแพ็คเกจแบบ global
pnpm add <package_name> --workspaceเพิ่ม workspace packages เป็น dependencies
pnpm add <package_name> --filter "<package_selector>"กรองแพ็คเกจที่จะติดตั้งใน monorepo

pnpm install <package>

ติดตั้ง dependencies ใน package.json => เมื่อติดตั้งแล้วจะอยู่ใน node_modules

sh
pnpm install

# aliases
pnpm i
Optionsคำอธิบาย
pnpm install --forceบังคับติดตั้งแพ็คเกจ ไม่สนใจ cache
pnpm install --offlineติดตั้งโดยใช้ cache เท่านั้น
pnpm install --prefer-offlineใช้ cache ก่อน ถ้าไม่มีจึงดาวน์โหลด
pnpm install --prod หรือ -Pติดตั้งเฉพาะ dependencies
pnpm install --dev หรือ -Dติดตั้งเฉพาะ devDependencies
pnpm install --no-optionalไม่ติดตั้ง optionalDependencies
pnpm install --lockfile-onlyอัพเดท lockfile เท่านั้น
pnpm install --fix-lockfileแก้ไข lockfile ที่เสียหาย
pnpm install --frozen-lockfileห้ามอัพเดท lockfile
pnpm install --merge-git-branch-lockfilesรวม lockfile จาก Git branches
pnpm install --reporter=<name>กำหนดรูปแบบการรายงาน
pnpm install --use-store-serverใช้ store server สำหรับการติดตั้ง
pnpm install --shamefully-hoistย้ายทุก dependency ไปที่ root
pnpm install --ignore-scriptsไม่รัน scripts หลังติดตั้ง
pnpm install --filter "<package_selector>"กรองแพ็คเกจที่จะติดตั้ง
pnpm install --resolution-onlyแก้ปัญหา dependencies เท่านั้น

pnpm update <package>

อัพเดท package ให้เป็นเวอร์ชั่นล่าสุด

sh
pnpm update vite
Optionsคำอธิบาย
pnpm update --recursive หรือ -rอัพเดททุก package ใน workspace
pnpm update --latest หรือ -Lอัพเดทเป็นเวอร์ชันล่าสุดที่เข้ากันได้
pnpm update --global หรือ -gอัพเดทแพ็คเกจที่ติดตั้งแบบ global
pnpm update --workspaceอัพเดทเฉพาะ workspace packages
pnpm update --prod หรือ -Pอัพเดทเฉพาะ production dependencies
pnpm update --dev หรือ -Dอัพเดทเฉพาะ development dependencies
pnpm update --no-optionalไม่อัพเดท optional dependencies
pnpm update --interactive หรือ -iเลือกเวอร์ชันที่จะอัพเดทแบบโต้ตอบ
pnpm update --filter "<package_selector>"กรองแพ็คเกจที่จะอัพเดทใน monorepo

pnpm remove <package>

ลบ package จาก package.json และ node_modules

sh
pnpm remove vite
Optionsคำอธิบาย
pnpm remove <package_name> --recursive หรือ -rลบแพ็คเกจจากทุกโปรเจ็คใน workspace
pnpm remove <package_name> --global หรือ -gลบแพ็คเกจที่ติดตั้งแบบ global
pnpm remove <package_name> --save-dev หรือ -Dลบจาก devDependencies
pnpm remove <package_name> --save-optional หรือ -Oลบจาก optionalDependencies
pnpm remove <package_name> --save-prod หรือ -Pลบจาก dependencies (production)
pnpm remove <package_name> --filter "<package_selector>"กรองแพ็คเกจที่จะลบใน monorepo

ลิงค์ package

sh
pnpm link <dir>
Optionsคำอธิบาย
pnpm link --dir <dir> หรือ -Cระบุไดเรกทอรีที่จะทำการ link
pnpm link <dir>สร้าง symlink ของแพ็คเกจปัจจุบันใน global store
pnpm linklink แพ็คเกจจาก global store มายังโปรเจ็คปัจจุบัน
pnpm link <pkg>link แพ็คเกจที่ระบุจาก global store มายังโปรเจ็คปัจจุบัน
pnpm link --globalทำการ link แบบ global
pnpm link --global <pkg>link แพ็คเกจที่ระบุแบบ global

package

sh
pnpm unlink
Optionsคำอธิบาย
pnpm unlink --recursive หรือ -rยกเลิกการ link แบบ recursive ในทุกแพ็คเกจของ workspace
pnpm unlink --filter "<package_selector>"กรองแพ็คเกจที่จะยกเลิกการ link ใน monorepo

pnpm import <package>

เพิ่มพิมพ์ pnpm inport จะสร้างไฟล์ pnpm-lock.yaml

package-lock.yaml คืออะไร

pnpm-lock.yaml คือไฟล์ล็อคเวอร์ชันที่ใช้ในระบบการจัดการแพ็คเกจของ pnpm ซึ่งมีความสำคัญและประโยชน์หลายประการ ดังนี้:

  1. ล็อคเวอร์ชัน: ไฟล์นี้เก็บข้อมูลเวอร์ชันที่แน่นอนของทุกแพ็คเกจที่โปรเจ็คใช้ รวมถึง dependencies และ sub-dependencies
  2. ความสอดคล้อง: ช่วยให้มั่นใจว่าทุกคนในทีมและทุกสภาพแวดล้อม (เช่น เครื่องพัฒนา, CI/CD) ใช้เวอร์ชันเดียวกันของแพ็คเกจ
  3. ความเสถียร: ป้องกันปัญหา "works on my machine" โดยรับประกันว่าทุกคนติดตั้งแพ็คเกจเวอร์ชันเดียวกัน
  4. ประสิทธิภาพ: ช่วยให้ pnpm ติดตั้งแพ็คเกจได้เร็วขึ้น เพราะรู้เวอร์ชันที่แน่นอนโดยไม่ต้องคำนวณใหม่
  5. ความปลอดภัย: ลดความเสี่ยงจากการติดตั้งแพ็คเกจที่อาจมีช่องโหว่โดยไม่ตั้งใจ
  6. การควบคุมเวอร์ชัน: ควรเก็บไฟล์นี้ไว้ใน version control (เช่น Git) เพื่อติดตามการเปลี่ยนแปลงของ dependencies
  7. การทำงานร่วมกัน: ช่วยให้ทีมสามารถจัดการ dependencies ร่วมกันได้อย่างมีประสิทธิภาพ
  8. การย้อนกลับ: สามารถย้อนกลับไปใช้เวอร์ชันก่อนหน้าได้ง่าย หากพบปัญหาจากการอัพเดท
  9. ข้อมูลเพิ่มเติม: เก็บข้อมูลอื่นๆ เช่น integrity hashes เพื่อตรวจสอบความถูกต้องของแพ็คเกจ
sh
pnpm import

pnpm rebuild <package>

สร้าง package ใหม่

sh
pnpm rebuild
Optionsคำอธิบาย
pnpm rebuild --recursive หรือ -rสร้าง native addons ใหม่แบบ recursive ในทุกแพ็คเกจของ workspace
pnpm rebuild --filter "<package_selector>"กรองแพ็คเกจที่จะสร้างใหม่ใน monorepo

pnpm prune <package>

ลบ packages ที่ไม่จำเป็น

sh
pnpm prune
Optionsคำอธิบาย
pnpm prune --prodลบเฉพาะ devDependencies
pnpm prune --no-optionalไม่ลบ optionalDependencies

pnpm fetch <package>

fetch package จาก lockfile ไปใน virtual store => ออกแบบเพื่อเพิ่มประสิทธิภาพในการ build docker image

sh
pnpm prune

ก่อนใช้ fetch

Dockerfile
FROM node:20

WORKDIR /path/to/somewhere

RUN corepack enable pnpm && corepack install -g pnpm@latest-9

# Files required by pnpm install
COPY .npmrc package.json pnpm-lock.yaml .pnpmfile.cjs ./

# If you patched any package, include patches before install too
COPY patches patches

# for each sub-package, we have to add one extra step to copy its manifest
# to the right place, as docker have no way to filter out only package.json with
# single instruction
COPY packages/foo/package.json packages/foo/
COPY packages/bar/package.json packages/bar/

RUN pnpm install --frozen-lockfile --prod

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

หลังใช้ fetch

Dockerfile
FROM node:20

WORKDIR /path/to/somewhere

RUN corepack enable pnpm && corepack install -g pnpm@latest-9

# pnpm fetch does require only lockfile
COPY pnpm-lock.yaml ./

# If you patched any package, include patches before running pnpm fetch
COPY patches patches

RUN pnpm fetch --prod

ADD . ./
RUN pnpm install -r --offline --prod

EXPOSE 8080
CMD [ "node", "server.js" ]
Optionคำอธิบาย
pnpm fetch --dev, -Dดึงเฉพาะ devDependencies
pnpm fetch --prod, -Pดึงเฉพาะ dependencies (ไม่รวม devDependencies)

pnpm dudupe <package>

จัดการกับการซ้ำซ้อนของ dependencies โดยเฉพาะในโปรเจ็คที่มีการใช้หลายเวอร์ชันของแพ็คเกจเดียวกัน คำสั่งนี้จะช่วยให้คุณทำการ dedupe (ลดการซ้ำซ้อน) ของ dependencies ที่ติดตั้งในโปรเจ็คของคุณให้เหลือเพียงเวอร์ชันเดียวที่ใช้ร่วมกันได้

sh
pnpm dedupe
Optionsคำอธิบาย
pnpm dedupe --checkตรวจสอบว่ามี dependencies ที่ซ้ำซ้อนหรือไม่ โดยไม่ทำการ dedupe

Released under the MIT License