В этом руководстве мы создадим руководство для публикации пакета в NPM. Есть несколько шагов, которые мы должны выполнить, чтобы опубликовать примитивную версию. В этом проекте мы использовали Typescript, JavaScript, и Gulp js.
Вот что мы собираемся создать:
https://npmjs.com/package/persian-normalizer

  • Подготовить среду
  • Создать учетную запись NPM
  • Создать репозиторий
  • Разработка, настройка и публикация

Если вы знакомы с простыми проблемами программирования Node, пропустите первые 3 шага.

Подготовить среду:

Сначала установите NodeJs и проверьте версии node и npm с помощью следующих команд.

node -v // v14.16.0
npm -v // 7.13.0

Я опубликовал с этими версиями. На следующем шаге я предлагаю установить VSCode в вашей системе для лучшего опыта разработки. Кроме того, для разработки требуется установка git.

Создать учетную запись NPM

npm — это менеджер пакетов для платформы Node JavaScript. Он устанавливает модули так, чтобы Node мог их найти, и разумно управляет конфликтами зависимостей. Чаще всего он используется для публикации, обнаружения, установки и разработки узловых программ. Установка на сайте npm невероятно проста. Просто зайдите на www.npmjs.com и нажмите Зарегистрироваться. Затем запустите npm login в командной строке и убедитесь, что вы вошли в систему.

Создать репозиторий

В Github создайте репозиторий и клонируйте его на свой компьютер. Имена пакетов Npm написаны строчными буквами, а слова разделены дефисом (-). Лучше создать репозиторий с этими спецификациями. Я создал это репозиторий на Github.
В пустом проекте запустите npm init и заполните вопросы. Наконец, будет создан package.json.

{
"name": "persian-normalizer",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Amir Kenarang",
"license": "ISC"
}
view raw package.json hosted with ❤ by GitHub

Разработка, настройка и публикация

В следующих шагах я хочу создать образец пакета javascript и протестировать его локально на вашем компьютере. Создайте index.js и напишите этот код.

const myFunction = (text) => {
console.log(text);
};
module.exports = myFunction;
view raw index.js hosted with ❤ by GitHub

Убедитесь, что ваш пакет установлен и работает

Вы должны протестировать свой код перед публикацией, и у вас должна быть возможность установить его локально. В корне вашего пакета сделайте следующее:

npm install . -g
npm link

Используйте npm ls -g, чтобы увидеть, есть ли он там. Чтобы протестировать локальную установку, перейдите в другую папку и выполните:

cd ../some-other-folder
npm install my-package

Используйте вот так:

const myFunc = require("my-package");
myFunc("My Text");
view raw sample.js hosted with ❤ by GitHub

Разработайте машинописный текст и настройте его

Теперь пришло время разработать ваш код и подготовить его к публикации в общедоступном репозитории NPM. Измените файлы js на ts и добавьте файл tsconfig.json. Вы можете сгенерировать с помощью tsc --init и установить свои конфиги. Это должно быть так:

{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"lib": ["es2017", "es7", "es6", "dom"],
"declaration": true,
"outDir": "dist",
"strict": false,
"esModuleInterop": true,
"resolveJsonModule": true
},
"exclude": [
"node_modules",
"dist"
]
}
view raw tsconfig.json hosted with ❤ by GitHub

Не забудьте добавить "declaration": true в tsconfig.json, а также добавить эти конфигурации в package.json, потому что при импорте библиотеки это сообщает компилятору TypeScript, где искать типы вашей библиотеки.

"main": "dist/index.js",
"types": "dist/index.d.ts",

Добавьте папку dist к файлам .gitignore и .npmignore.

Собрать и настроить Gulp

Установите typescript на свой компьютер и запустите команду tsc в корне проекта. Он создаст папку adistfolder и встроит в нее проект. После сборки вы можете увидеть, что есть два файла с расширением .d.ts и .js.
В моем проекте есть два файла JSON, которые являются статическими, и я должен скопировать их в папку dist, чтобы мой код работал хорошо. Здесь я использовал gulp для запуска задачи. gulp — это набор инструментов JavaScript с открытым исходным кодом. Я считаю, что это отличный инструментарий для разработчиков js.
Это код моей задачи gulp:

var gulp = require("gulp");
var path = {
jsonFiles: {
src: ["./src/modules/utf8-codes/*.json"],
dist: "./dist/modules/utf8-codes",
},
};
gulp.task("copy", function () {
return gulp.src(path.jsonFiles.src).pipe(gulp.dest(path.jsonFiles.dist));
});
gulp.task("default", gulp.series("copy"));
view raw gulpfile.js hosted with ❤ by GitHub

Опубликовать в NPM

Убедитесь, что ваши файлы Readme.md , CHANGELOG.md , CONTRIBUTING.md и LICENCE готовы к публикации. это не обязательно, но лучше иметь эту информацию в вашем проекте. Теперь я создал окончательный package.json и опубликовал его с помощью этой команды.

npm run publish

prepublish сценарий, запускает задачи глотка и создает машинописный текст. Окончательный package.json выглядит так.

{
"name": "persian-normalizer",
"version": "1.0.2",
"description": "Normalize Persian Text",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"gulp": "gulp",
"prepublish": "gulp && tsc",
"publish": "npm run prepublish && npm publish"
},
"repository": {
"type": "git",
"url": "git+https://github.com/amirkenarang/persian-normalizer.git"
},
"keywords": [
"Persian",
"Normalize",
"Arabic Text",
"Javascript",
"Typescript"
],
"author": "Amir Kenarang amir.kenarang@gmail.com",
"license": "MIT",
"bugs": {
"url": "https://github.com/amirkenarang/persian-normalizer/issues"
},
"homepage": "https://github.com/amirkenarang/persian-normalizer#readme",
"devDependencies": {
"gulp": "^4.0.2"
}
}

Бууум! Мы получили пакет.

Надеюсь, вам понравился этот урок. Удачи с публикацией пакета в NPM