В этом руководстве мы создадим руководство для публикации пакета в 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" | |
} |
Разработка, настройка и публикация
В следующих шагах я хочу создать образец пакета javascript
и протестировать его локально на вашем компьютере. Создайте index.js
и напишите этот код.
const myFunction = (text) => { | |
console.log(text); | |
}; | |
module.exports = myFunction; |
Убедитесь, что ваш пакет установлен и работает
Вы должны протестировать свой код перед публикацией, и у вас должна быть возможность установить его локально. В корне вашего пакета сделайте следующее:
npm install . -g npm link
Используйте npm ls -g
, чтобы увидеть, есть ли он там. Чтобы протестировать локальную установку, перейдите в другую папку и выполните:
cd ../some-other-folder npm install my-package
Используйте вот так:
const myFunc = require("my-package"); | |
myFunc("My Text"); |
Разработайте машинописный текст и настройте его
Теперь пришло время разработать ваш код и подготовить его к публикации в общедоступном репозитории 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" | |
] | |
} |
Не забудьте добавить "declaration": true
в tsconfig.json, а также добавить эти конфигурации в package.json
, потому что при импорте библиотеки это сообщает компилятору TypeScript, где искать типы вашей библиотеки.
"main": "dist/index.js", "types": "dist/index.d.ts",
Добавьте папку dist
к файлам .gitignore
и .npmignore
.
Собрать и настроить Gulp
Установите typescript
на свой компьютер и запустите команду tsc
в корне проекта. Он создаст папку adist
folder и встроит в нее проект. После сборки вы можете увидеть, что есть два файла с расширением .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")); |
Опубликовать в 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