Автор оригинала: FreeCodeCamp Community Member.
Вы не поверите, насколько это легко!
Если вы создали множество модулей NPM, вы можете пропустить впереди. В противном случае мы пройдем быстро вступление.
TL; доктор
Модуль NPM Только Требуется файл package.json с Имя и Версия характеристики.
Привет!
Вот ты где.
Просто крошечный слон с вашей жизнью впереди вас.
Вы не являетесь экспертом в создании пакетов NPM, но вы хотели бы узнать, как.
Все большие слоны, поглощенные своими гигантскими ногами, делая пакет после пакета, и вы все как:
Ну, я здесь, чтобы сказать, что вы можете!
Больше нет сомнений в себе.
Давайте начнем!
Ты не слон
Я имел в виду, что метафорически Отказ
Вы когда-нибудь задавались вопросом, что называются детские слоны?
Конечно, у вас есть. Детский слон называется Тельф Отказ
Я в тебя верю
Я сомневаюсь в себе это реально.
Вот почему никто никогда не делает ничего круто.
Вы думаете, что вам не удастся, поэтому вместо этого вы ничего не делаете. Но тогда вы прославляете людей, которые делают все потрясающие вещи.
Супер ироника.
Вот почему я собираюсь показать вам крошечный возможный модуль NPM.
Вскоре у вас будут крышки модулей NPM, вылетающие из ваших советов. Многоразовый код, насколько глаз может видеть. Без трюков – без сложных инструкций.
Комплексные инструкции
Я обещал, что я бы не …
… но я полностью сделал.
Они не так плохо. Вы простите мне один день.
Шаг 1: учетная запись NPM
Вам нужен один. Это просто часть сделки.
Регистрация здесь Отказ
Шаг 2: вход
Вы сделали учетную запись NPM?
Да, ты сделал.
Прохладный.
Я также предполагаю, что вы можете использовать командная строка/консоль И т.д. Я собираюсь называть это терминалом отныне. Есть разница Видимо Отказ
Перейти к вашему терминалу и введите:
npm adduser
Вы также можете использовать команду:
npm login
Выберите какие бы командования Йивы с вами.
Вы получите подсказку для вашего Имя пользователя , пароль и Email Отказ Придерживайся там!
Вы должны получить сообщение с похожим на это:
Logged in as bamblehorse to scope @username on https://registry.npmjs.org/.
Хороший!
Давайте сделаем пакет
Сначала нам нужна папка для удержания нашего кода. Создайте один, в каком способе удобно для вас. Я звоню в мою посылку крошечный Потому что это действительно очень мало. Я добавил некоторые команды терминалов для тех, кто не знаком с ними.
md tiny
В этой папке нам нужен Package.json файл. Если вы уже используете Node.js – Вы встретили этот файл раньше. Это JSON Файл, который содержит информацию о вашем проекте и имеет множество различных вариантов. В этом руководстве мы собираемся сосредоточиться на двух из них.
cd tiny && touch package.json
Насколько маленьким может это действительно быть?
Действительно маленький.
Все учебники о создании пакета NPM, включая официальную документацию, сообщите вам, чтобы ввести определенные поля в вашем Package.json. Мы собираемся продолжать пытаться опубликовать наш пакет как можно меньше, пока не работает. Это своего рода TDD для минимального пакета NPM.
Обратите внимание: Я показываю вам это, чтобы продемонстрировать, что заставить пакет NPM не должен быть сложен. Чтобы быть полезным для сообщества в целом, пакет нуждается в нескольких дополнениях, и мы покрываем это позже в статье.
Публикация: первая попытка
Чтобы опубликовать свой пакет NPM, вы запускаете хорошо называемую команду: NPM публикует.
Таким образом, у нас есть пустой Package.json в нашей папке, и мы дадим это:
npm publish
Упс!
Мы получили ошибку:
npm ERR! file package.json npm ERR! code EJSONPARSE npm ERR! Failed to parse json npm ERR! Unexpected end of JSON input while parsing near '' npm ERR! File: package.json npm ERR! Failed to parse package.json data. npm ERR! package.json must be actual JSON, not just JavaScript. npm ERR! npm ERR! Tell the package author to fix their package.json file. JSON.parse
NPM так много не нравится.
Справедливо.
Публикация: ударить два
Давайте придам нашему пакет имени в файле package.json:
{ "name": "@bamlehorse/tiny" }
Возможно, вы заметили, что добавил свое имя пользователя NPM на начало.
О чем это?
Используя имя @ Бамблехорс/крошечный вместо того, чтобы просто крошечный Мы создаем пакет под Область нашего имени пользователя. Это называется Навесенный пакет Отказ Это позволяет нам использовать короткие имена, которые могут быть уже взяты, например крошечный Пакет Уже существует в НПМ.
Вы могли бы видеть это с популярными библиотеками, такими как Угловые рамки от Google. У них есть несколько выделенных пакетов, таких как @ Угловая/ядра и @ Угловой/http Отказ
Довольно круто, да?
Мы постараемся опубликовать второй раз:
npm publish
Ошибка меньше на этот раз – прогресс.
npm ERR! package.json requires a valid "version" field
Каждый пакет NPM нуждается в версии, чтобы разработчики знали, могут ли они безопасно обновлять до нового выпуска вашего пакета, не нарушая остальную часть своего кода. Система версий NPM с использованием называется СЕМВЕР , который стоит Семантическая версия Отказ
Не беспокойтесь о том, что понимают более сложные имена версий, но вот их сводку того, как работают основные:
Публикация: третья попытка
Мы дадим нашу package.json версия: 1.0.0 – первый главный выпуск.
{ "name": "@bamblehorse/tiny", "version": "1.0.0" }
Давайте опубликовать!
npm publish
Оу Шпреты.
npm ERR! publish Failed PUT 402npm ERR! code E402npm ERR! You must sign up for private packages : @bamblehorse/tiny
Позвольте мне объяснить.
Навесные пакеты автоматически публикуются в частном порядке, потому что, а также полезны для таких пользователей, как мы, они также используются компаниями для обмена кодом между проектами. Если бы мы опубликовали нормальную упаковку, то наше путешествие закончится здесь.
Все, что нам нужно изменить, – это рассказать NPM, что на самом деле мы хотим, чтобы все использовали этот модуль – не держать его заперты в своих хранилищах. Поэтому вместо этого мы бежим:
npm publish --access=public
Борьси!
+ @bamblehorse/tiny@1.0.0
Мы получаем знак плюс, название нашего пакета и версия.
Мы сделали это – мы в НПМ-клубе.
Я взволнован.
Вы должны быть взволнованы.
Вы поймали это?
Милый!
Версия одна Нет!
Давайте перегруппируемся
Если мы хотим, чтобы быть серьезно в качестве разработчика, и мы хотим использовать наш пакет, нам нужно показать людям код и сказать им, как его использовать. Вообще мы делаем это, поместив наш код где-нибудь публично и добавляя файл Readme.
Нам также нужен код.
Шутки в сторону.
У нас еще нет кода.
GitHub – отличное место, чтобы поставить свой код. Давайте сделаем Новый репозиторий Отказ
ПРОЧТИ МЕНЯ!
Я привык печатать Readme вместо Прочти меня.
Вам больше не нужно делать это.
Это забавная связь.
Мы собираемся добавить некоторые значки Funky от Shields.io Чтобы люди знали, что мы очень крутые и профессиональные.
Вот тот, который давайте знаем текущую версию нашего пакета:
Этот следующий значок интересен. Это не удалось, потому что у нас на самом деле нет ни одного кода.
Мы должны действительно написать какой-то код …
Лицензия на код
Что название определенно является Ссылка Джеймса Бонда Отказ
Я на самом деле забыл добавить лицензию.
Лицензия просто позвольте людям знать в каких ситуациях они могут использовать ваш код. Есть Много разных Отказ
Там есть прохладная страница, называемая Insights в каждом репозитории GitHUB, где вы можете проверить различные статистики – включая стандарты сообщества для проекта. Я собираюсь добавить мою лицензию оттуда.
Затем вы ударили эту страницу:
Код
У нас еще нет кода. Это слегка неловко.
Давайте добавим сейчас, прежде чем проиграть все доверие.
module.exports = function tiny(string) { if (typeof string !== "string") throw new TypeError("Tiny wants a string!"); return string.replace(/\s/g, ""); };
Там это есть.
А крошечный Функция, которая удаляет все пробелы из строки.
Так что все пакет NPM требует index.js файл. Это точка входа в ваш пакет. Вы можете сделать это по-разному, когда ваш пакет становится более сложным.
Но на данный момент это все, что нам нужно.
Мы уже на месте?
Мы так близко.
Мы, вероятно, должны обновить наше минимальное Package.json и добавить некоторые инструкции на наше readme.md Отказ
В противном случае никто не будет знать, как использовать наш прекрасный код.
Package.json.
{ "name": "@bamblehorse/tiny", "version": "1.0.0", "description": "Removes all spaces from a string", "license": "MIT", "repository": "bamblehorse/tiny", "main": "index.js", "keywords": [ "tiny", "npm", "package", "bamblehorse" ] }
Мы добавили:
- Описание : Краткое описание пакета
- Репозиторий : Github Friendly – так вы можете написать Имя пользователя/репо
- Лицензия : MIT в этом случае
- Главная : точка входа в ваш пакет, относительно корня папки
- Ключевые слова : список ключевых слов, используемых для открытия вашего посылки в поисках NPM
readme.md
Мы добавили инструкции о том, как установить и использовать пакет. Хороший!
Если вы хотите хороший шаблон для вашего Readme, просто проверьте популярные пакеты в сообществе с открытым исходным кодом и используйте их формат, чтобы начать работу.
Сделанный
Давайте опубликуем наш захватывающий пакет.
Версия
Сначала мы обновим версию с Версия NPM команда.
Это главный выпуск, поэтому мы напечатаем:
npm version major
Какие выходы:
v2.0.0
Публиковать!
Давайте запустим нашу новую любимую команду:
npm publish
Сделано:
+ @bamblehorse/tiny@2.0.0
Классная вещь
Пакет фобии Дает вам отличное резюме вашего пакета NPM. Вы можете проверить каждый файл на таких сайтах, как Unpkg тоже.
Спасибо
Это было замечательное путешествие, которое мы просто взяли. Я надеюсь, что вам понравилось так сильно, как я.
Пожалуйста, дайте мне знать, что вы думали!
Звезда Пакет, который мы только что создали здесь: