В этой статье мы увидим, как создать свой собственный пакет npm с помощью javascript и опубликовать его в Интернете.
Что такое НПМ?
NPM — или «Диспетчер пакетов узла» — это менеджер пакетов по умолчанию для среды выполнения JavaScript Node.js.
НПМ состоит из двух основных частей:
- инструмент CLI (интерфейс командной строки) для публикации и загрузки пакетов.
- онлайн-репозиторий, в котором размещаются пакеты JavaScript.
Что такое package.json?
Файл package.json вашего проекта является центральным местом для настройки и описания того, как взаимодействовать с вашим приложением и запускать его. Он используется интерфейсом командной строки npm для идентификации вашего проекта и понимания того, как обрабатывать зависимости проекта. Именно файл package.json позволяет npm запускать ваш проект, запускать сценарии, устанавливать зависимости, публиковать в реестре NPM и выполнять множество других полезных задач.
Создание нашего локального пакета npm
Пакет npm, который мы собираемся создать, будет просто базовым, состоящим из некоторых основных математических функций.
Для начала создадим файл package.json.
mkdir maths cd maths/ mkdir package mkdir testing cd package/ npm init
Давайте посмотрим, как выглядит наш package.json.
{ "name": "basicmath101", "version": "1.0.0", "description": "Basic mathematics utility functions.", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "https://github.com/AnirbanPal4341/mathematics.git" }, "keywords": [ "mathematics" ], "author": "Anirban Pal", "license": "ISC" }
Далее давайте определим наш index.js, где мы определим нашу бизнес-логику.
class Maths { // summation of an array of numbers. sumArray(numArray = []) { return numArray.reduce((a, b) => a + b, 0); } // summation of numbers. sum(...args) { let sum = 0; for (let arg of args) sum += arg; return sum; } // subtraction of numbers. subtract(...args) { let diff = args[0] * 2; for (let arg of args) diff -= arg; return diff; } // multiplication of numbers. multiply(...args) { let product = 1; for (let arg of args) product *= arg; return product; } // division of numbers. division(n1, n2 = 1) { return n1 / n2; } // factorial of a number. factorial(number) { if (number < 0) { return undefined; } else if (number === 0) { return 1; } else { let fact = 1; for (let i = 1; i <= number; i++) { fact *= i; } return fact; } } // if a number is a palindrome. isPalindrome(num) { var rem, temp, final = 0; var number = Number(num); temp = number; while (number > 0) { rem = number % 10; number = parseInt(number / 10); final = final * 10 + rem; } if (final == temp) { return true; } else { return false; } } // if a number is a prime number. isPrime(number) { let isPrime = true; if (number === 1) { return undefined; } else if (number > 1) { for (let i = 2; i < number; i++) { if (number % i == 0) { isPrime = false; break; } } if (isPrime) { return true; } else { return false; } } } // calculate nCr. combinations(n, r) { if (n == r || r == 0) { return 1; } else { r = r < n - r ? n - r : r; return product_Range(r + 1, n) / product_Range(1, n - r); } } } function product_Range(a, b) { var prd = a, i = a; while (i++ < b) { prd *= i; } return prd; } // export class module.exports = new Maths();
Создайте базовый файл README.md.
# basicmath101 A npm package for basic mathematics operations. # installation $ npm install basicmath101 --save # js usage import package : const maths = require("mathematics"); use basic mathematics functions defined in the package : console.log(maths.sum(1,2,3); result : 6
Добавьте файл .npmrc.
@my-org:registry=https://npm.pkg.github.com/
После этого сделайте следующее, чтобы опубликовать в Интернете.
npm install sudo npm link npm login npm publish
Давайте посмотрим, как наш опубликованный пакет npm станет общедоступным.
Ссылка на GitHub — https://github.com/AnirbanPal4341/mathematics.git
Ваше здоровье!