Ссылка на npm не заботится о "файлах" в package.json или.npmignore
Моя цель - указать, какие файлы будут включены в модуль моего узла, прежде чем публиковать его, и иметь возможность локально протестировать установку. Использование "файлов" в package.json работает так: если я опубликую свой пакет и установлю его, я получу только то, что было указано в "файлах".
Это не тот случай, когда я использую ссылку npm. Будь то "файлы" в package.json или.npmignore, ссылка на npm всегда дает мне каждый файл. Как я могу проверить установку моих модулей локально, как это?
Пример:
cd ~/projects/node-redis # go into the package directory
npm link # creates global link
cd ~/projects/node-bloggy # go into some other package directory.
npm link redis # link-install the package
Если ~/projects/node-redis содержит "files: [lib]" в своем package.json, вы можете ожидать, что только lib будет отображаться в ~/projects/node-bloggy после запуска "npm link redis", но это не так. дело.
Кроме того: я люблю ноды и npm, но если вы посмотрите на то, что находится в ваших модулях нод, то в readme используется так много посторонних файлов, как PNG. Модули смехотворно огромны из-за этого.
0 ответов
Обходной путь: npm install
URL-адрес репозитория GIT
Вы можете установить пакет из репозитория GIT, например
npm install https://github.com/AndreasPizsa/parse-decimal-number.git
Это актуальный npm install
который уважает files
запись, даже если пакет еще не был опубликован в репозитории npm.
Задний план
npm link
не копирует, создает ссылку
npm link
это не на самом деле установить пакет, скопировав его в целевую папку.
Вместо этого он создает символическую ссылку на исходную папку, поэтому вы видите все файлы, которые находятся в исходной папке ("node-redis"), а не только те, которые указаны вfiles
.
Это поведение задокументировано в npm link
документация:
Во-первых, ссылка npm в папке пакета создаст символическую ссылку в глобальной папке {prefix}/lib/node_modules/, которая ссылается на пакет, в котором была выполнена команда npm link. (значение префикса см. в npm-config). Он также свяжет любые ячейки в пакете с {prefix}/bin/{name}.
Затем в другом месте npm link имя-пакета создаст символическую ссылку от глобально установленного имени-пакета к node_modules / текущей папки.
"Что такое символическая ссылка?" вы можете спросить:
символическая ссылка (также символическая ссылка или мягкая ссылка) - это термин для любого файла, который содержит ссылку на другой файл или каталог в форме абсолютного или относительного пути и который влияет на разрешение имени пути.
Если вас беспокоит использование места на жестком диске, не беспокойтесь - ничего не копируется и не дублируется, только ссылки (точно так же, как ссылка на Википедию не дублирует это, это фактически экономит место)
... и бег тоже npm install
локально
npm install
с путем к пакету также создаст символическую ссылку на рассматриваемый пакет. Полезным сценарием для этого может быть модуль, который все еще находится в стадии разработки.
cd ~/projects/node-bloggy
npm install ~/projects/node-redis
Это создаст символическую ссылку под node_modules
в вашем node-bloggy
проект.