Модули NPM из репозитория NPM предлагают множество функций, но их следует использовать с осторожностью.

Первоначально опубликовано на https://fek.io.

Прошло чуть более пяти лет с момента события, известного как Апокалипсис левой площадки. В марте 2016 года пользователь NPM удалил свой модуль Left-pad из репозитория NPM, что привело к нарушению работы любого приложения Node.js, которое имело эту зависимость.

Это был тревожный сигнал для сообщества Node.js, и после этого инцидента в NPM были внесены некоторые изменения, чтобы это не повторилось.

Что именно произошло

Компания под названием Kik с приложением для обмена сообщениями хотела использовать тот же модуль под названием kik, что и другой пользователь, Azer Koçulu, в NPM. Они отправили г-ну Кочулу электронное письмо от патентного поверенного с просьбой отказаться от модуля под названием kik. Г-н Кочулу отказался назвать название модуля. Затем Кик отправился в NPM с запросом на регистрацию товарного знака, чтобы предоставить им доступ к модулю, что они в конечном итоге и сделали.

Г-н Кочулу, потеряв имя модуля, решил отменить публикацию всех 250 своих других модулей из NPM. Одним из таких модулей был модуль, который использовался в тысячах проектов, включая Babel.js. Когда он отменил публикацию левой панели, это по сути сломало Интернет. Это связано с тем, что очень многие проекты полагаются на NPM, не говоря уже о том, что модули также имеют свои зависимости. Вы получаете эти гигантские древовидные структуры зависимостей, иногда глубиной в 10 уровней. Если вы хотите это визуализировать, просто запустите npm list в каталоге модулей.

Это было вызвано модулем, длина которого в то время составляла всего 11 строк.

Лори Восс, которая в то время была техническим директором NPM, сделала беспрецедентный шаг, отменив публикацию модуля. NPM как компания была еще довольно молодой и раньше не сталкивалась с этим сценарием. Они внесли изменение в свою систему, которое не позволяло пользователям отменить публикацию модуля, если были зависимости от этого модуля, чтобы предотвратить повторение этого инцидента.

Вот несколько сообщений о самом инциденте;









Переосмысление модулей NPM

Одной из замечательных особенностей Node также может быть его слабость - способность npm i любую функциональность по прихоти.

Перед установкой любого модуля NPM вы должны сначала спросить себя, действительно ли мне нужно включать этот модуль? Прекрасным примером этого является moment.js. Moment в основном используется для работы с объектами даты в JavaScript. Он также может форматировать даты и получать части даты.

const year = moment().format('YYYY');

Вы также можете сделать то же самое, вызвав функцию getYear() для объекта даты в JavaScript.

const year = new Date().getYear();

Местные репо

Многие крупные организации теперь предварительно утверждают, какие модули NPM можно использовать в проекте. Некоторые используют локальные репозитории, поэтому их разработчики используют в своих приложениях только предварительно утвержденные модули.

NPM также предлагает локальную версию NPM, так что вы можете просто запустить ее для своей организации.

Подход Дено

Если вы не знакомы с Deno, это альтернативная среда выполнения JavaScript от Райана Даля, изобретателя Node.js. Одна из вещей, которые сделал Райан при создании Deno, - это переосмысление того, как он делал определенные вещи в Node.

Node.js не имеет стандартной библиотеки. Когда Райан создавал Deno, он также удостоверился, что в него включена стандартная библиотека модулей, которую вы можете использовать без установки сторонних модулей.

Deno также позволяет разработчикам импортировать модули прямо из источника, поэтому нет необходимости в диспетчере пакетов. Вы можете просто import 'https://github.com/someuser/mymodule/main/src.js' в своем приложении, и Deno кэширует модуль локально в вашей системе.

В Deno также есть инспектор зависимостей, который вы можете использовать для оценки своих зависимостей. Просто запустите deno info, и Deno запустит свой инспектор.

Изучение ваших модулей

Прежде чем npm install использовать какой-либо модуль, с которым вы раньше не работали, взгляните на исходный код. Большинство модулей NPM имеют открытый исходный код или лицензию, по которой вы можете просмотреть исходный код. ПОСМОТРЕТЬ ИСТОЧНИК!

Еще одна вещь, на которую стоит обратить внимание, - это зависимости, используемые этим модулем. Одна из вещей, на которую вы должны обратить внимание, - это сколько лет этим зависимостям и есть ли какие-либо проблемы с безопасностью. NPM обеспечивает аудит безопасности, который вы можете выполнить для своих модулей.

nome audit сформирует отчет о любых уязвимостях. Вы также можете использовать npm audit fix для устранения любых уязвимостей в модуле.

Заключение

NPM может добавить массу дополнительных функций к вашим приложениям Node, но вы должны использовать его только тогда, когда вам нужны определенные функции, которые еще не предоставлены. По возможности подумайте о написании собственных модулей.

Большинство модулей NPM являются проектами с открытым исходным кодом, и большинство из них также находится на Github. Если вы обнаружите проблему с существующим модулем, подумайте о том, чтобы сделать запрос на перенос, чтобы передать его этому замечательному сообществу.

Больше контента на plainenglish.io