
Эта статья является частью нашей серии Общение с клиентами. Мы делимся историями о том, как люди используют npm на работе. Хотите поделиться своими мыслями? Напишите нам линию.
В: Привет! Можете назвать свое имя, чем вы занимаетесь и чем занимается ваша компания?
О: Привет! Я Маркус из Эльзевир. Я работаю в команде, разрабатывающей их глобальную платформу электронной коммерции.
Как проходит ваш день?
Не так уж плохо. У меня была стартовая встреча для предстоящего интересного проекта.
Расскажите мне историю использования npm в вашей компании. Какую конкретную проблему вы решили с помощью частных пакетов и организаций?
Наш сервер состоит в основном из микросервисов: различные API для обработки таких вещей, как заказы и клиенты, имеют соответствующий пользовательский клиент в виде модуля npm, который мы публикуем в частной организации npm. Это помогает нам корректно обрабатывать изменения в API за счет управления версиями конечных точек и клиентов, а также распространения определений типов TypeScript для запросов и ответов всех наших API.
Можете ли вы рассказать нам историю о конкретный пакет, который вы хотели сделать, чтобы частные пакеты действительно позволяли вам это делать?
В качестве платформы мы управляем несколькими интернет-магазинами внутри компании. Одни созданы нами, другие — другими командами. У нас есть единый API, который принимает все заказы, сохраняет их в базе данных и передает в различные системы фулфилмента. Мы создали модуль npm для предоставления типов для отправленного заказа вместе с сгенерированной схемой .JSON, которую наш API использует для проверки отправленных ему заказов. Этот модуль обновляется по мере того, как наша конечная точка обновляется для обработки новых данных. Эти типы теперь доступны только в виде определений TypeScript, но в настоящее время мы также работаем над созданием типов для PHP.
Использует ли ваша компания открытый исходный код? Как вы договариваетесь о том, что вы держите в секрете, а что — в открытом доступе (не стесняйтесь выражаться настолько расплывчато, насколько это необходимо)?
Не так много, как хотелось бы. Многое из того, над чем мы работаем, относится к нашей организации. Мы пытаемся открыть исходный код всего общего, например вышеупомянутого json-schema-php-generator.
Для людей, которые не уверены, для чего они могут использовать частные пакеты — как вы объясняете вариант использования?
Я думаю, что все, что является общим для нескольких приложений (будь то логика, определения типов или что-то еще), является отличным кандидатом для частных пакетов. Как я уже говорил выше, мы активно используем их для обмена определениями типов, но у нас также есть несколько модулей, которые просто содержат логику для всей организации (например, данные о стране или регионе) в виде файла .JSON с некоторыми вспомогательными методами.
Как дела? Каков повседневный опыт использования частных пакетов/организаций?
В основном все работает хорошо. Мы уже широко используем npm, поэтому включение наших собственных модулей практически не вызывает затруднений. С помощью таких инструментов, как np, мы можем убедиться, что наши пакеты публикуются согласованным образом с прохождением тестов.
Как бы вы хотели улучшить или расширить продукт в будущем?
Мы столкнулись с одной проблемой. С нашей версионной конечной точкой нам по-прежнему необходимо поддерживать более старые версии, пока мы не сможем убедиться, что все клиенты перешли на последнюю версию. У нас есть модуль npm, содержащий нашу схему .JSON для проверки, но мы не смогли импортировать несколько версий одного модуля. В идеале мы хотели бы иметь версии 1, 2 и 3 в качестве зависимостей и импортировать их отдельно в наш валидатор. Нам удалось обойти это, переместив старую версию в подкаталог и опубликовав ее как отдельный пакет с версией, добавленной в конце имени.
Не могли бы вы порекомендовать другую org или компания используют частные пакеты или организации и почему?
Если у вас есть вариант использования, который требует некоторой формы общего кода или ресурсов между приложениями, определенно стоит попробовать частные модули npm. Они хорошо вписываются в существующие рабочие процессы, и их достаточно легко удалить или заменить, если они не подходят.