Ana içeriğe atla

pnpm ile Node Modules yapılandırma seçenekleri

· 2 dakikalık okuma

node_modules dizini oluşturmanın birçok yolu vardır. Amacınız en kurallı olanı oluşturmak olmalıdır, ancak bu mümkün değilse, serbest bir node_modules yapmak için seçenekler de vardır.

Varsayılan kurulum

Varsayılan olarak pnpm v5, yarı kurallı bir node_modules oluşturur. Yarı kurallı (birkaç istisna dışında) bağımlılık olarak package.json'a eklenen paketleri gerektirebileceği anlamına gelir. Buna rağmen, bağımlılıklarınız herhangi bir pakete erişebilir olacaktır.

Varsayılan yapılandırma şöyle görünür:

; Tüm paketler, node_modules/.pnpm/node_modules'a çıkarılır
hoist-pattern[]=*

; TypeScript'e uyumlanmak için tüm type'lar root'a çıkarılır
public-hoist-pattern[]=*types*

; ESLint ile ilgili tüm paketler de root'a çıkarılır
public-hoist-pattern[]=*eslint*

Tak-Çalıştır. En katı yapılandırma

pnpm, v5.9 'dan bu yana Yarn'ın Plug'n'Play 'ini destekler. PnP ile hem uygulamanız hem de uygulamanızın bağımlılıkları yalnızca belirtilen bağımlılıklara erişebilecektir. hoist=false ayarı ile bu işlem daha da katı olacaktır. Bir monorepo'da uygulamanız üst projenin bağımlılıklarına da erişemeyecektir.

Plug'n'Play'i kullanmak için şu ayarları yapın:

node-linker=pnp
symlink=false

Kurallı, geleneksel modül dizini

PnP'yi kullanmaya henüz hazır değilseniz bile, hala kurallı olabilir ve çekme (hoist) yapılandırmasını false olarak ayarlayarak paketlerin yalnızca kendi bağımlılıklarına erişmesine izin verebilirsiniz:

hoist=false

Ancak, bağımlılıklarınızın bazıları bağımlılıkları olmayan paketlere erişmeye çalışıyorsa, iki seçeneğiniz vardır:

  1. Paketteki manifestoya eksik bağımlılığı eklemek için pnpmfile.js oluşturun ve hook kullanın.

  2. hoist-pattern ayarına bir kalıp ekleyin. Örneğin, bulunamayan modül babel-core ise, aşağıdaki ayarı .npmrc'ye ekleyin:

    hoist-pattern[]=babel-core

En kötü ihtimalle - root'u yukarı çekme

Bazı araçlar, her şeyi sanal kayıt alanı (virtual store) 'nın root'una ve bazısını da direkt root'a taşıyan varsayılan pnpm yapılandırmasıyla bile çalışmayabilir. Bu durumda, her şeyi ya da bir bağımlılık alt kümesini, modules dizininin root'una çekebilirsiniz.

Hoisting everything to the root of node_modules:

shamefully-hoist=true

Yalnızca bir kalıpla eşleşen paketleri yukarı çekin:

public-hoist-pattern[]=babel-*