javascript - Webpack nemůže importovat balíček nainstalovaný z git
Takže jsem vytvořil fork balíčku v gitu. Provedl jsem své změny. Pak v mém terminálu
npm install --save git+https://github.com/hayk94/ddp.js.git
A pak se pokusím importovat balíček do svého kódu takto
import DDP from 'ddp.js'
Ale webpack mi dává tuto chybu
ERROR in ./main.js
Module not found: Error: Can't resolve 'ddp.js' in '/Users/hayksafaryan/projects/b2cEmbedLib'
@ ./main.js 23:11-28
@ multi (webpack)-dev-server/client?http://localhost:8080 babel-polyfill ./main.js
webpack: Failed to compile.
Nicméně webpack funguje dobře, pokud nainstaluji balíček z npm. Balíček importuji podle dokumentace, nicméně možná existuje nějaký jiný způsob pro balíčky nainstalované z git?
Odpověď č. 1
Vstupním bodem balíčku je lib/ddp.js, ale tento soubor v repozitáři neexistuje. Je velmi běžné, že knihovny před publikováním na npm nejprve sestaví své knihovny, aby mohly používat novější funkce JavaScriptu a přitom stále poskytovaly podporu pro starší verze, které je nepodporují. To se provádí pomocí hooku prepublish, který se automaticky spouští před publikováním balíčku (když spustíte npm publish). Díky tomu se sestavené soubory do repozitáře nedostanou, protože by hlavně zahlcovaly vaše commity. Někteří lidé se rozhodnou je do repozitáře nahrát, aby je mohli přímo odtud používat, což se stalo poměrně vzácným, protože tyto případy použití jsou obecně pokryty službami jako Unpkg.
Máte několik možností, jak jej použít z gitového repozitáře.
- Zkontrolujte vytvořené soubory.
- Sestavte soubory po instalaci. Buď ručně, nebo pomocí
postinstallhooku. (nedoporučuje se) - Změňte vstupní bod na
src/ddp.js. Pokud potřebujete soubory transpileovat, není to platná možnost, i když byste teoreticky mohli povolit balíček ve své konfiguraci webpack, aby byl transpileován (za předpokladu, že jste vyloučilinode_modulesz transpileování). - Publikujte balíček na npm pod vaším názvem prostoru (
@yourusername/ddp.js) a používejte ho. Podrobnosti naleznete v části Práce s balíčky s omezeným přístupem.