Я когда создавал приватный npm пакет на коммерческом проекте, то тоже сильно удивлялся, когда не находил нужной информации по этой теме в интернете. Пришлось знатно попотеть, чтобы разобраться. В итоге решил сделать видео, чтобы и я не забыл, как делать npm пакет, и чтобы другие смогли без проблем найти и изучить информацию. Я очень рад, что тебе помогли мои труды! :)
Привет, спасибо, крутой видос. Вопрос возник, вот мы используем токен для чтения что бы использовать нашу библиотеку, а как тогда мы устанавливаем допустим material ui без этого токена? Можешь пояснить пожалуйста в чем разница?)
Привет! В видео мы разрабатываем приватную библиотеку, к которой есть доступ только у конкретной команды разработчиков. Material UI - это публичная библиотека, ее может установиться каждый. На коммерческих проектах чаще всего нужна именно приватная библиотека UI компонент. А для приватности необходим токен
крутой урок, спасибо подскажите, Максим, а в github packages чтобы установить библиотеку кому-либоу всегда нужен токен на чтение? или можно сделать библиотеку доступную для скачивания всем без токена просто через npm?
Мы в видео создаем именно приватную библиотеку и для ее доступа необходим токен. Если делать публичную библиотеку, которая доступна для скачивания всем, то токен конечно же не нужен
@@MaximFilanovich просто пытаюсь сделать публичную библиотеку, публикую её, она приватная, меняю видимость на публичную, пробую установить через npm и все равно требует токен(
@@vadim_romanovчестно, не рассматривал как делать публичную библиотеку. В продуктовой разработке часто нужна именно приватная. Наверняка через GitHub Packages это можно сделать. Поищи в инете, какие там параметры нужно изменить для публичной
Я так понимаю, вы хотите сделать изменения в проекте библиотеки и моментально увидеть эти же правки в проекте, в который подключена библиотека. Я правильно понял?
Максим, спасибо за ролик! Подскажи, разве правильно, чтобы стили всей библиотеки приходили одним файлом? Возможно ли разбить итоговый результат таким образом, чтобы при импорте компонента, вместе с ним импортировались только стили этого компонента?
Не вижу никакой проблемы в одном файле index.scss для всей библиотеки. Не думаю, что при любом другом способе у тебя стили будут грузится намного быстрее. Для твоего кейса скорее всего можно использовать extract: false в плагине postcss. Благодаря этому параметру файл со стилями создаваться не будет, все стили будут прописаны внутри dist/index.js (скорее всего они будут прописаны через атрибут style, но это не точно)
@@stasend ну да, в данном случае действительно незачем. Но если твои компоненты не совсем большие по размеру и количество неиспользованных компонент мало, то, как по мне, не стоит запариваться по поводу оптимизации загрузки стилей для этих компонент. В любом случае, если тебе так сильно это нужно, то можешь попробовать параметр extract в postcss, думаю, должно помочь. А вообще можно попробовать твои компоненты выпилить через rollup. Я думаю у бандлеров (rollup, webpack) есть возможность исключить из билда некоторые компоненты. Только на вопрос как это сделать, я навряд ли отвечу. Нужно идти в Гугл :)
Импортировать файл стилей необходимо только один раз в проект (это частая практика для ui kit библиотек). В React приложении ты можешь просто сделать один импорт в index.js либо App.js. Но можно обойтись и без файла стилей, просто указав нужные настройки в плагине postcss. Там вроде как за это отвечает extract. Можешь поставить extract: false и файл со стилями создаваться не будет (но стили при этом должны примениться). Возможно, я в чем-то ошибаюсь, лучше перепроверь документацию плагина postcss: github.com/egoist/rollup-plugin-postcss#extract-css
@@MaximFilanovich да все верно, этот вопрос успел изучить) я правильно понимаю что такое решение с импортом картинок было использовано потому что rollup не умеет умеет работать с импортамт картинок в файлах стилей(background: url()), или это мне не удалось найти решение этой проблемы
@@Danny-uc6kxЧестно не знаю, умеет или нет. Но в любом случае, на практике лучше использовать тег img, а не background: url(). Могут быть исключительные кейсы, но они редкие. Если тебе так нужен background-image, то я думаю у rollup есть решение на этот счет. И скорее всего оно будет через postcss.