node.js - Node/NPM İçe Aktarma Yolları Nasıl Eşlenir
Paylaşılan kod içeren başka bir yerel NPM modülünü kullanan bir NPM modülüm var. Hiçbiri halka açık değil, bunların hepsi yerel.
Ortak modülü package.json dosyamda şöyle içe aktarıyorum:
"my-shared": "file:../my-shared-code"
Ben npm install yaptığımda, my-shared-code doğru şekilde ithal ediliyor ve kodu şöyle ithal edebiliyorum:
import Blah from 'my-shared/src/sharedTypes';
Problem
İçeri aktarımda "src" kelimesini kullanmak zorundayım. Ancak, derleme yaptığımda bir build dizini oluşturuyorum, bu da tüm bu içe aktarmaları bozuyor!
İthalatları bir şekilde haritalamak için NPM'i kullanıp kullanamayacağımı merak ediyordum.
Hiç 'src' kelimesini kullanmamamı sağlayabilir miyim?
Sadece şunu yapabilir miyim:
import Blah from 'my-shared/sharedTypes';
ve sonra sihirli bir şekilde "src" mi yoksa "build" dizinlerini mi kullanacağını mı anlıyor?
Denediğim şey
package.json seçeneklerine baktım ve işe yarayabileceğini düşündüğüm bir "files" özelliği var. Ancak bence bu sadece dosyaları beyaz listeye ekliyor.
Ben de "main" özelliğine baktım, ancak ben "bir modül ihraç etmiyorum". Sadece bir sürü yardımcı dosyam var ve bunları birden fazla başka projeye import edebilmeyi istiyorum.
Aslında başarmaya çalıştığım şey
TypeScript kullanıyorum ve belirli modeller için türleri paylaşan, ancak bazı yardımcı işlevleri de paylaşan bir ön uç ve bir arka uçum var.
TypeScript/React ön yüzümün ve TypeScript arka ucumun başka bir node_package'tan TypeScript dosyalarını içe aktarabilmesini istiyorum, ancak geliştirme için "src" kullanmasını ve üretim için derlendiğinde "build" kullanmasını bilmesi gerekiyor.
Cevap #1
Tam olarak sorduğun şey olmasa da, belki npm link arıyorsun. Sezgisel değil, ama yukarıdaki durumun için benim kullandığım şey bu.
npm-link, diğerlerinin başvurabilmesi için yerel projeleri kaydetmenin bir yoludur. Sadece belgeleri okumanın önemli olduğunu unutmayın -- kullanılması, yerel ortamınızı sezgisel olmayan şekillerde etkileyebilir (özellikle doğrudan makinenizden derleyip yayımlarsanız -- CI/CD yerine).
Cevap #2
Tüketici projesinde yol eşlemesini kullanabilirsiniz --> https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping
Paket ile ilgili olarak, bir index.ts dosyasında export * from './my-file' sözdizimini kullanarak yeniden dışa aktarım yapabilirsiniz (her dizinde birine ihtiyacınız olabilir). Ancak, çok sayıda dosyanız varsa bu zahmetlidir. (kusurlu örnek)
Bir başka çözüm, package.json dosyasını dist klasörüne kopyalamak ve build işlemini orada yapmak için bir betik hazırlamak gibi görünüyor.
Orada benzer bir tartışma var: Belirli bir klasörü npm ile yayınlamak ama paket kökü olarak nasıl