Langsung ke konten utama

Opsi konfigurasi Node-Modules dengan pnpm

· Satu menit membaca

Ada banyak cara untuk membuat direktori node_modules. Tujuan anda adalah untuk membuat direktori dengan mode strict semaksimal mungkin, medkipun demikian ada opsi untuk membuat node_modules yang lebih longgar.

Pengaturan standar

Secara standar, pnpm v5 akan membuat node_modules semi-ketat. Semi-ketat berarti aplikasi Anda hanya dapat meminta paket yang ditambahkan sebagai dependensi ke package.json (dengan beberapa pengecualian). Namun, dependensi Anda akan dapat mengakses paket apa pun.

Konfigurasi standar terlihat seperti ini:

; All packages are hoisted to node_modules/.pnpm/node_modules
hoist-pattern[]=*

; All types are hoisted to the root in order to make TypeScript happy
public-hoist-pattern[]=*types*

; All ESLint-related packages are hoisted to the root as well
public-hoist-pattern[]=*eslint*

Plug'n'Play. Konfigurasi paling ketat

pnpm mendukung Yarn's Plug'n'Play sejak v5.9 dirilis. Dengan PnP, aplikasi Anda dan dependensi aplikasi Anda hanya akan memiliki akses ke dependensi yang dideklarasikan. Ini bahkan lebih ketat daripada menyetel hoist=false karena di dalam monorepo, aplikasi Anda tidak akan dapat mengakses bahkan dependensi dari proyek root.

Untuk menggunakan Plug'n'Play, gunakan konfigurasi berikut ini:

node-linker=pnp
symlink=false

Mode ketat, tradisional module direktori

Jika anda belum siap untuk menggunakan Pnp, anda bisa menggunakan mode ketat dan hanya memperbolehkan packages untuk mengakses dependensi mereka sendiri dengan melakukan konfigurasi hoist ke false:

hoist=false

Namun, jika anda ingin beberapa dependensi mengakses packages yang tidak memiliki dependensi, anda memiliki dua opsi:

  1. Buat pnpmfile.js file dan gunakan hook untuk menambahkan dependensi yang hilang ke dalam package's manifest.

  2. Tambahkan pola ke pengaturan hoist-pattern. Misalnya, jika modul yang tidak ditemukan adalah babel-core, tambahkan pengaturan berikut ke .npmrc:

    hoist-pattern[]=babel-core

Kasus terburuk - menarik ke root

Beberapa sarana mungkin tidak bekerja bahkan dengan konfigurasi bawaan pnpm, yang menarik semuanya ke root pernyimpanan virtual dan beberapa paket ke root. Dalam hal ini, Anda dapat menarik semuanya atau sebagian dependensi ke root direktori modul.

Menarik semuanya ke root node_modules:

shamefully-hoist=true

Menarik hanya paket yang cocok dengan pola:

public-hoist-pattern[]=babel-*