مدیریت package جاوااسکریپت – راهنمای کامل استفاده از NPM و Yarn

Package Manager ابزاری است که توسعه‌دهندگان برای یافتن، دانلود، نصب، پیکربندی، ارتقاء و حذف پکیج‌های مورد نیاز خود به طور خودکار از آن استفاده می‌کنند. در این مقاله قصد داریم تا درمورد Package Managerهایی مانند NPM و Yarn صحبت کنیم و هر آن چه را که برای شروع کار با آن‌ها لازم است بدانیم را مورد بررسی قرار دهیم.

چرا در کار توسعه خود به یک Package Manager نیاز داریم؟ در ادامه به این سوال پاسخ خواهیم داد.

چرا به یک Package Manager نیاز داریم؟

اگر فرض کنیم که هیچ Package Managerای وجود نداشت، در این صورت تمام کارهای زیر را باید به صورت دستی انجام می‌دادیم:

  • تمام پکیج‌های مناسب برای پروژه خود را پیدا کنیم
  • بررسی کنیم که پکیج‌ها هیچ آسیب‌پذیری شناخته‌شده‌ای نداشته باشند
  • پکیج‌ها را دانلود کنیم
  • آن‌ها را در محل مناسب نصب کنیم
  • به‌روزرسانی‌های جدید را برای همه پکیج‌های خود پیگیری کنیم
  • زمانی که نسخه جدیدی برای پکیج‌ای منتشر شد، آن را به نسخه جدید ارتقا دهیم
  • پکیج‌هایی که دیگر نیازی به آن‌ها نداریم را حذف کنیم

مدیریت دستی ده‌ها یا صدها پکیج یک کار خسته‌کننده و بسیار وقت‌گیر است. بنابراین، Package Managerهایی مانند NPM، pNPM، Bower و Yarn به ما کمک می‌کنند تا فرآیند خسته‌کننده مدیریت دستی packageها به شکل خودکار انجام شود.

البته باید به این موضوع توجه کنیم که Package Manager با Package Registry یکسان نیست.

تفاوت بین Package Manager وPackage Registry در چیست؟

Package Manager ابزاری است که توسعه‌دهندگان برای یافتن، دانلود، نصب، پیکربندی، ارتقاء و حذف پکیج‌های کامپیوتری به‌طور خودکار از آن استفاده می‌کنند.

NPM (Node Pachage Manager) و Yarn (Yet Another Resource Negotiator) دو Package Manager پرکاربرد هستند.

Package Registry یک پایگاه داده برای ذخیره‌سازی هزاران پکیج(کتابخانه‌ها، پلاگین‌ها، چارچوب‌ها یا ابزارها) است. به عبارت دیگر، مکانی است که پکیج‌ها در آن منتشر و نصب می‌شوند.

NPM Registry و GitHub Packages دو Package Registry پرکاربرد هستند.

اکنون که می‌دانیم Package Manager چیست و چرا به آن نیاز داریم، می‌توانیم نحوه استفاده از دو مورد از پرکاربردترین‌ها یعنی NPM و Yarn را بررسی کنیم.

البته باید به این موضوع توجه داشته باشیم که بحث‌های متعددی در مورد ارجحیت NPM به Yarn وجود دارد، ولی ما در این مقاله از آن‌ها اجتناب می‌کنیم زیرا بهترین Package Manager همانی است که بهترین کار را برای ما انجام می‌دهد.

بنابراین، این مقاله نشان می‌دهد که NPM و Yarn چگونه کار می‌کنند، نه اینکه بگوید کدام یک از آن‌ها بهترین است. درنهایت این ما هستیم که تصمیم می‌گیریم کدام یک را انتخاب کنیم.

همچنین امکانی که وجود دارد این است که می‌توانیم برای یک پروژه از NPM و برای پروژه‌ی دیگر از Yarn استفاده کنیم.

چگونه Node Package Manager (NPM) را نصب کنیم؟

NPM هنگام نصب Node به طور خودکار نصب می‌شود. بنابراین، برای نصب NPM بر روی سیستم خود، به وب‌سایت NodeJS می‌رویم و آخرین LTS  نود یا نسخه فعلی را دانلود می‌کنیم.

چگونه Yarn را نصب کنیم؟

بهتر است Yarn را از طریق NPM نصب کنیم. بنابراین، ابتدا NPM را از وب سایت Node.js دانلود و نصب کنیم. سپس برای نصب Yarn به صورت زیر ادامه می‌دهیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install -g yarn
npm install -g yarn
npm install -g yarn

نحوه بررسی نسخه Node نصب شده

برای بررسی نسخه Node.js نصب شده روی سیستم خود، دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
node -v
node -v
node -v

منظور از علامت v- در دستور بالا مخفف

--version
--versionاست.

نحوه بررسی نسخه NPM نصب شده

برای بررسی نسخه NPM نصب شده روی سیستم خود، دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm -v
npm -v
npm -v

نحوه بررسی نسخه Yarn نصب شده

برای بررسی نسخه Yarn نصب شده روی کامپیوتر خود،دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn -v
yarn -v
yarn -v

نحوه ارتقا Node Package Manager به آخرین نسخه موجود

برای این که NPM را به آخرین نسخه موجود ارتقا دهیم دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install npm@latest -g
npm install npm@latest -g
npm install npm@latest -g

نحوه ارتقا NodeJS

برای ارتقا Node.js به آخرین نسخه دو راه وجود دارد:

راه حل اول: به‌روزرسانی از طریق وب سایت NodeJS

یکی از راه‌های ارتقای NodeJS، این است که به شکل دستی آخرین نسخه را از وب‌سایت Node.js دانلود و نصب کنیم.

راه حل دوم: بروزرسانی از طریق ابزار مدیریت نسخه

راه دیگر این است که از یک version manager مانند NVM، n یا nvs استفاده کنیم.

نحوه ارتقا Yarn به آخرین نسخه موجود

برای این که Yarn به آخرین نسخه آپدیت پیدا کند، دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn set version latest
yarn set version latest
yarn set version latest

اکنون که NPM(و یا Yarn) را روی کامپیوتر خود داریم، می‌توانیم از manager نصب شده برای پیدا کردن، نصب، پیکربندی و حذف پکیج‌های پروژه خود استفاده کنیم.

اما منظور از پکیج‌ دقیقا چیست؟

پکیج دقیقاً چیست؟

پکیج یک دایرکتوری(یا پروژه) است که دارای یک فایل

package.json
package.jsonمی‌باشد که برای ثبت اطلاعات مربوط به آن مورد استفاده قرار می‌گیرد.

موضوعی که باید به آن توجه کنیم این است که ما فقط می‌توانیم پکیج‌ها(پروژه‌ای که با فایل

package.json
package.jsonتوصیف شده است) را در NPM registry منتشر کنیم.

نحوه نصب پکیج‌ها

دو راه برای نصب پکیج وجود دارد: محلی یا سراسری.

نصب پکیج محلی

پکیج‌ای که به شکل محلی نصب شده است، فقط در پروژه‌ای که آن را نصب کرده‌ایم می‌توانیم مورد استفاده قرار دهیم.

برای نصب یک پکیج به صورت محلی، مراحل زیر را طی می‌کنیم:

  • از خط فرمان به دایرکتوری root پروژه خود می‌رویم.
  • پکیج خود را با استفاده از دستور نصب NPM یا Yarn، که در ادامه بررسی خواهیم کرد، نصب می‌کنیم.

توجه: باید Node و NPM را روی سیستم خود داشته باشیم تا بتوانیم از دستورات نصبNPM (و یا Yarn) استفاده کنیم.

دستور نصب NPM

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install package-name --save
npm install package-name --save
npm install package-name --save

باید توجه داشته باشیم که دستور

--save
--saveدر دستور بالا به NPM می‌گوید تا
package-name
package-nameرا در فایل
package.json
package.jsonبه عنوان یکی از بسته‌هایی که پروژه به آن وابسته است، ذخیره کند.

اگر بخواهیم یک نسخه مشخص از یک پیکج را نصب کنیم در چنین حالتی، یک

@[version-number]
@[version-number]بعد از نام پکیج اضافه می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install package-name@4.14.1 --save
npm install package-name@4.14.1 --save
npm install package-name@4.14.1 --save

از طرف دیگر، اگر پکیج‌ای که نصب می‌کنیم برای اهداف توسعه و تست است، از دستور زیر استفاده می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install package-name --save-dev
npm install package-name --save-dev
npm install package-name --save-dev

دستورات بالا باعث می‌شود تا NPM سه مورد را در دایرکتوری root پروژه ما دانلود کند: یک پوشه

node_modules
node_modules، یک فایل
package.json
package.jsonو یک فایل
package-lock.json
package-lock.json. در ادامه به شکل مفصل درباره این موارد صحبت خواهیم کرد.

دستور نصب Yarn

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn add package-name
yarn add package-name
yarn add package-name

اگر بخواهیم یک نسخه مشخص از یک پکیج را نصب کنیم در چنین حالتی، یک

@[version-number]
@[version-number]بعد از نام پکیج اضافه می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn add package-name@4.14.1
yarn add package-name@4.14.1
yarn add package-name@4.14.1

از طرف دیگر، اگر پکیج‌ای که نصب می‌کنیم برای اهداف توسعه و تست است، از دستور زیر استفاده می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn add package-name --dev
yarn add package-name --dev
yarn add package-name --dev

دستورات بالا باعث می‌شود تا Yarn سه مورد را در دایرکتوری root پروژه ما دانلود کند: یک پوشه node_modules، یک فایل package.json و یک فایل yarn.lock. در ادامه به‌طور کامل درباره این موارد صحبت خواهیم کرد.

نصب پکیج سراسری

پکیج‌ای که به شکل سراسری نصب می‌شود این قابلیت را دارد تا در هر نقطه‌ای از سیستم خود بتوانیم از آن استفاده کنیم. برای نصب پکیج به صورت سراسری، دستور زیر را در ترمینال اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install package-name -g
npm install package-name -g
npm install package-name -g

و یا اینکه می‌توانیم از Yarn به صورت زیر استفاده کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn global add package-name
yarn global add package-name
yarn global add package-name

مقایسه نصب پکیج به شکل محلی و سراسری

به‌طور کلی بهتر است که پکیج مورد نیاز خود را به صورت محلی نصب کنیم. در ادامه به برخی از تفاوت‌های بین نصب محلی و سراسری اشاره کرده‌ایم:

تفاوت اول: محل نصب

پکیج محلی در دایرکتوری که در دستور

npm install package-name
npm install package-name (و یا
yarn add package-name
yarn add package-name) اجرا می‌کنیم، نصب می‌شود.

به طور خاص، پکیج‌های نصب شده محلی پروژه را در دایرکتوری

node_module
node_moduleآن خواهیم یافت. اما در مقابل، یک پکیج نصب شده به شکل سراسری در یک مکان واحد روی سیستم ما نصب می‌شود و مکان دقیق، به پیکربندی سیستم بستگی دارد.

تفاوت دوم: نسخه‌های پکیج

اگر پکیج خود را به صورت محلی نصب کرده باشیم، می‌توانیم از نسخه‌های مختلف یک پکیج برای توسعه چند اپلیکیشن استفاده کنیم. با این حال، اگر پکیج را به شکل سراسری نصب کنیم، مجبور می‌شویم از یک نسخه پکیج یکسان برای همه برنامه‌های خود استفاده کنیم.

تفاوت سوم: به‌روزرسانی‌ها

نصب محلی این امکان را به ما می‌دهد تا بتوانیم پکیج‌های پروژه را که می‌خواهیم به آخرین نسخه ارتقا دهیم را انتخاب کنید. این امر مدیریت به‌روزرسانی‌هایی را که سازگاری با پکیج‌های دیگر را مختل می‌کنند، آسان‌تر می‌کند.

با این حال، ارتقاء یک پکیج نصب شده در سطح سراسری، بسته را برای همه پروژه‌ها به‌روزرسانی می‌کند. که این اتفاق می‌تواند سازگاری با بسته‌های دیگر را به هم بزند و مشکلات بسیار زیادی را برای نگه‌داری آن‌ها ایجاد کند.

تفاوت چهارم: توصیه استفاده

نصب سراسری برای پکیج‌هایی که قصد داریم از آن‌ها فقط در خط فرمان خود استفاده کنیم بهترین انتخاب است، به خصوص زمانی که دستورات اجرایی قابل استفاده مجدد در پروژه‌ها را ارائه می‌دهند. اما نصب محلی برای پکیج‌هایی که قصد داریم از طریق دستور

import
importیا تابع
require()
require()از آن‌ها استفاده کنیم، بهترین انتخاب می‌باشد.

تفاوت پنجم: مثال‌ها

NPM، React Native CLI، Gatsby CLI، Grunt CLI و Vue CLI نمونه‌های شناخته شده‌ای از پکیج‌های سراسری هستند. همینطور Webpack، Lodash، Jest و MomentJS نیز از نمونه‌های رایج پکیج‌های محلی به‌شمار می‌روند.

البته باید به نکات زیر توجه داشته باشیم:

  • ما می‌توانیم پکیج‌هایی را که می‌خواهیم از آن‌ها هم در خط فرمان و هم در پروژه خود استفاده کنیم، هم به شکل محلی و هم سراسری نصب کنیم. نمونه‌هایی از این پکیج‌ها ExpressJS و CoffeeScript هستند.
  • Package Manager ما یک پکیج نصب شده را اجرا نمی‌کند. NPM(و Yarn) فقط پکیج‌ها را در دایرکتوری
    node_modules
    node_modulesنصب می‌کنند. و اگر دستور
    --save
    --saveرا مشخص کرده باشیم، manager جزئیات مربوط به پکیج را به فایل json اضافه خواهد کرد.
  • برای اجرا کردن هر پکیج اجرایی، باید خودمان به صراحت این کار را انجام دهیم. در بخش بعدی به چگونگی انجام آن خواهیم پرداخت.

اما پوشه

node_modules
node_modules، فایل
package.json
package.json، فایل
package-lock.json
package-lock.jsonو فایل
yarn.lock
yarn.lockدقیقا چیست؟

منظور از پوشه
node_modules
node_modules
 چیست؟

دایرکتوری

node_modules
node_modulesپوشه‌ای است که NPM تمام پکیج‌هایی را که به صورت محلی برای پروژه مدنظر ما دانلود می‌کند، در آن قرار می‌دهد.

منظور از فایل
package.json
package.json
 چیست؟

فایل package.json یک سند JSON است که Package Managerها(مانند NPM و Yarn) برای ذخیره‌سازی اطلاعات مربوط به یک پروژه خاص از آن استفاده می‌کنند.

به عبارت دیگر، فایل package.json فایل متادیتا یک پروژه است.

مزایای فایل
package.json
package.json

یک فایل

package.json
package.json:

  • انتشار پروژه ما در NPM registry را امکان پذیر می‌کند
  • مدیریت و نصب پکیج‌های ما را برای دیگران آسان‌ می‌کند
  • به NPM کمک می‌کند تا وابستگی‌های یک ماژول را به راحتی مدیریت کند
  • پکیج ما را قابل اشتراک‌گذاری با توسعه‌دهندگان دیگر می‌کند

نحوه ایجاد فایل
package.json
package.json

به دایرکتوری root پروژه خود می‌رویم و با اجرای دستور زیر یک فایل

package.json
package.jsonایجاد می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm init
npm init
npm init

یا اگر از Yarn استفاده می‌کنیم، باید دستور زیر را اجرا کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn init
yarn init
yarn init

هنگامی که دستور مقداردهی اولیه که در بالا به آن اشاره کردیم را اجرا کنیم، Package Manager با پرسیدن چند سوال در مورد پروژه ما را در ایجاد فایل

package.json
package.json راهنمایی می‌کند. اما اگر بخواهیم از این سوالات رد شویم، می‌توانیم یک فایل
package.json
package.jsonبصورت پیش‌فرض ایجاد کنیم.

نحوه ایجاد یک فایل پیش‌فرض
package.json
package.json

فرض کنید ترجیح می‌دهیم از سوالاتی که توسط دستور

npm init
npm init(یا
yarn init
yarn init) پرسیده می‌شود، صرف‌نظر کنیم. در چنین شرایطی، به دایرکتوری root پروژه خود می‌رویم و دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm init -y
npm init -y
npm init -y

و یا اگر Package Managerای که استفاده می‌کنیم Yarn است، دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn init -y
yarn init -y
yarn init -y

دستورات بالا از مقادیر پیش‌فرض استخراج شده از دایرکتوری فعلی برای ایجاد فایل

package.json
package.jsonپروژه ما استفاده می‌کند.

توجه: علامت y- مخفف

--yes
--yesاست.

هنگامی که Package Manager فرآیند مقداردهی اولیه خود را به پایان می‌رساند، فایل

package.json
package.jsonپروژه ما حاوی یک آبجکت با مجموعه‌ای از ویژگی‌ها خواهد بود.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "codesweetly-project",
"version": "1.0.0",
"main": "index.js"
}
{ "name": "codesweetly-project", "version": "1.0.0", "main": "index.js" }
{
  "name": "codesweetly-project",
  "version": "1.0.0",
  "main": "index.js"
}

همانطور که می‌بینید فایل

package.json
package.jsonحاوی نام، نسخه و فیلدهای اصلی می‌باشد. در ادامه با این ویژگی‌ها بیشتر آشنا خواهیم شد.

فیلدهای
package.json
package.json

ویژگی‌های

package.json
package.json باعث می‌شود تا پروژه ما برای Package Managerها و کاربران نهایی قابل استفاده باشد.

فرض کنید می‌خواهیم پکیج خود را در NPM registry منتشر کنیم. در این صورت، فایل

package.json
package.json ما باید دارای فیلدهای “name”و “version” باشد.

با این حال اگر قصد نداشته باشیم که پکیج خود را منتشر کنیم، در این صورت همه فیلدها از جمله ویژگی‌های “name” و “version” اختیاری هستند.

در ادامه فیلدهای رایج در فایل

package.json
package.json بیشتر بررسی می‌کنیم.

name

فیلد “name”  ویژگی است که برای ثبت یک نام برای پروژه، مورد استفاده قرار می‌گیرد.

در ویژگی “name” موارد زیر را باید رعایت کنیم:

  • تک کلمه باشد
  • از حروف کوچک تشکیل شده باشد
  • تعداد کاراکترهای آن کمتر یا مساوی ۲۱۴ باشد

باید توجه داشته باشیم که می‌توانیم کلمات را با خط تیره و underline به هم متصل کنیم.

مثلا:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "code_sweetly-project"
}
{ "name": "code_sweetly-project" }
{
  "name": "code_sweetly-project"
}

 version

فیلد “version” شماره نسخه فعلی پروژه را نشان می‌دهد.

ویژگی “version” باید به شکل قالب

major.minor.patch
major.minor.patchباشد و همچنین از دستورالعمل‌های نسخه‌بندی معنایی پیروی کند.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"version": "1.0.0"
}
{ "version": "1.0.0" }
{
  "version": "1.0.0"
}

description

فیلد “description” یک ویژگی است که شرح مختصری از اهداف پروژه ما را شامل می‌شود.

NPM توصیه می‌کند یک ویژگی “description” داشته باشیم تا پکیج ما راحت‌تر در وب سایت NPM پیدا شود. چون توضیحات ما یکی از مواردی است که هنگام اجرای فرمان جستجوی در npm نشان داده می‌شود.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"description": "A brief description about this package (project)"
}
{ "description": "A brief description about this package (project)" }
{
  "description": "A brief description about this package (project)"
}

main

فیلد “main”در واقع entry point یک پروژه را نشان می‌دهد. به عبارت دیگر، زمانی که شخصی تابع

require()
require()را اجرا می‌کند، Node فراخوانی را به
require(<package.json:main>)
require(<package.json:main>) برطرف می‌کند.

مثلا:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"main": "./src/index.js"
}
{ "main": "./src/index.js" }
{
  "main": "./src/index.js"
}

private

فیلد “private” به Package Managerها اجازه می‌دهد تا بدانند که آیا باید پروژه ما را در  NPM registry منتشر کنند یا خیر.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"private": true
}
{ "private": true }
{
  "private": true
}

اگر ویژگی “private” را در فایل

package.json
package.jsonخود روی true تنظیم کنیم، Package Managerها پروژه ما را منتشر نخواهند کرد.

بنابراین، تنظیم این ویژگی یک راه عالی برای جلوگیری از انتشار تصادفی پکیج مورد نظر ما می‌باشد.

scripts

فیلد “scripts” شامل دستورات اسکریپتی است که می‌خواهیم در زمان‌های مختلف در طول lifecycle پروژه‌ خود اجرا کنیم.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"scripts": {
"test": "jest",
"dev": "webpack --mode development",
"build": "webpack --mode production",
"predeploy": "npm run build",
"deploy": "gh-pages -d build"
}
}
{ "scripts": { "test": "jest", "dev": "webpack --mode development", "build": "webpack --mode production", "predeploy": "npm run build", "deploy": "gh-pages -d build" } }
{
  "scripts": {
    "test": "jest",
    "dev": "webpack --mode development",
    "build": "webpack --mode production",
    "predeploy": "npm run build",
    "deploy": "gh-pages -d build" 
  }
}

فیلد “scripts” بالا حاوی پنج ویژگی است که مقادیر آن‌ها دستوراتی است که می‌خواهیم Package Manager ما هر زمان که key ویژگی را فراخوانی می‌کنیم، اجرا کند. برای مثال، اگر

npm run dev
npm run devرا اجرا کنیم دستور “
webpack --mode development
webpack --mode development” اجرا می‌شود.

keywords

فیلد “keywords” مجموعه‌ای از کلمات کلیدی را مشخص می‌کند که می‌تواند به افراد در پیدا کردن پکیج ما کمک کند.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"keywords": [
"drag",
"drop",
"drag and drop",
"dragndrop",
"draggable"
]
}
{ "keywords": [ "drag", "drop", "drag and drop", "dragndrop", "draggable" ] }
{
  "keywords": [
    "drag",
    "drop",
    "drag and drop",
    "dragndrop",
    "draggable" 
  ]
}

ویژگی “keywords” بخشی از اطلاعاتی است که هنگام اجرای فرمان جستجوی npm نشان داده می‌شود.

author

فیلد “author” شامل فهرستی از اطلاعات و جزئیات مربوط به نویسنده پروژه است.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"author": "Oluwatobi Sofela <oluwatobiss@codesweetly.com> (https://www.codesweetly.com)"
}
{ "author": "Oluwatobi Sofela <oluwatobiss@codesweetly.com> (https://www.codesweetly.com)" }
{
  "author": "Oluwatobi Sofela <oluwatobiss@codesweetly.com> (https://www.codesweetly.com)"
}

همچنین دستور بالا را می‌توانیم به شکل زیر نیز بنویسیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"author": {
"name": "Oluwatobi Sofela",
"email": "oluwatobiss@codesweetly.com",
"url": "https://www.codesweetly.com"
}
}
{ "author": { "name": "Oluwatobi Sofela", "email": "oluwatobiss@codesweetly.com", "url": "https://www.codesweetly.com" } }
{
  "author": {
    "name": "Oluwatobi Sofela",
    "email": "oluwatobiss@codesweetly.com",
    "url": "https://www.codesweetly.com"
  }
}

توجه به این نکته لازم است که ویژگی‌های “email” و “url” ختیاری هستند.

dependencies

فیلد “dependencies” شامل لیستی است که تمام پکیج‌هایی که یک پروژه برای تولید به آن‌ها وابسته است را دربرمی‌گیرد.

مثلا:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"dependencies": {
"first-package": "^1.0.4",
"second-package": "~2.1.3"
}
}
{ "dependencies": { "first-package": "^1.0.4", "second-package": "~2.1.3" } }
{
  "dependencies": {
    "first-package": "^1.0.4",
    "second-package": "~2.1.3"
  }
}

بنابراین، زمانی که یک کاربر پروژه ما را از NPM registry نصب می‌کند، ویژگی dependencies تضمین می‌کند که Package Managerها می‌توانند به‌طور خودکار پکیج‌های فهرست شده را پیدا و نصب کنند.

ما می‌توانیم از طریق یکی از راه‌هایی که در زیر به آن‌ها اشاره شده است، پکیجی را به فیلد “dependencies” اضافه کنیم:

  • به صورت دستی نام و نسخه معنایی هر پکیجی را که پروژه ما در زمان تولید به آن وابستگی دارد، اضافه کنیم.
  • دستور
    npm install package-name --save-prod
    npm install package-name --save-prodرا در ترمینال خود اجرا کنیم. یا اگر از Yarn استفاده می‌کنیم،
    yarn add package-name
    yarn add package-nameرا اجرا کنیم.

devDependencies

فیلد “devDependencies” شامل فهرستی از تمام پکیج‌هایی می‌باشد که پروژه در تولید به آن‌ها نیاز ندارد، اما برای اهداف توسعه محلی و تست مورد نیاز می‌باشد.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"devDependencies": {
"first-dev-package": "^5.8.1",
"second-dev-package": "3.2.2—۴٫۰٫۰"
}
}
{ "devDependencies": { "first-dev-package": "^5.8.1", "second-dev-package": "3.2.2—۴٫۰٫۰" } }
{
  "devDependencies": {
    "first-dev-package": "^5.8.1",
    "second-dev-package": "3.2.2—۴٫۰٫۰"
  }
}

باید به این نکته توجه کنیم که پکیج‌های لیست شده در فیلد “devDependencies” در محیط توسعه پروژه در دسترس هستند اما در سرور محصول موجود نخواهند بود.

فرض کنید کاربری پروژه ما را از طریق دستور

npm install
npm install(یا
yarn add
yarn add) نصب می‌کند. در چنین حالتی، Package Manager تمام devDependenciesهای لیست شده را در دایرکتوری
node_modules
node_modulesپروژه پیدا کرده و دانلود می‌کند.

از طریق یکی از راه‌هایی که در زیر به آن‌ها اشاره شده است، می‌توانیم پکیجی را به فیلد “devDependencies” اضافه کنیم:

  • نام و نسخه معنایی هر پکیجی را که پروژه ما برای اهداف توسعه و تست به آن وابستگی دارد، به صورت دستی اضافه کنیم.
  • دستور
    npm install package-name --save-dev
    npm install package-name --save-devرا در ترمینال خود اجرا کنیم. یا اگر از Yarn استفاده می‌کنیم،
    yarn add package-name --dev
    yarn add package-name --devرا اجرا کنیم.

homepage

فیلد “homepage” نشانی اینترنتی صفحه اصلی پروژه ما را مشخص می‌کند.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"homepage": "https://codesweetly.com/package-json-file-explained"
}
{ "homepage": "https://codesweetly.com/package-json-file-explained" }
{
  "homepage": "https://codesweetly.com/package-json-file-explained"
}

تا اینجا مفاهیم مربوط به فایل

package.json
package.jsonرا مورد بررسی قرار دادیم، در ادامه می‌خواهیم درمورد
package-lock.json
package-lock.jsonصحبت کنیم.

منظور از فایل
package-lock.json
package-lock.json
 چیست؟

فایل

package-lock.json
package-lock.jsonسندی است که NPM برای ثبت نسخه دقیق همه پکیج‌هایی که به صورت محلی در دایرکتوری
node_modules
node_modulesپروژه خود نصب کرده‌ایم، استفاده می‌کند.

یک فایل

package-lock.json
package-lock.jsonبرنامه را  دقیقاً همانطور که آن را در NPM registry منتشر کردیم،۱۰۰% قابل بازتولید می‌کند.

بنابراین، فرض کنید کاربری برنامه ما را شبیه‌سازی و کلون کرده و دستور

npm install
npm installرا اجرا می‌کند. در چنین حالتی،
package-lock.json
package-lock.json تضمین می‌کند که کاربر نسخه دقیق تمام پکیج‌هایی را که برای توسعه برنامه خود استفاده کرده‌ایم، دانلود خواهد کرد.

یا به عنوان مثال، فرض کنید کاربری برنامه ما را که حاوی فایل

package-lock.json
package-lock.json نیست، کلون کرده است و یکی از پکیج‌های مورد استفاده در برنامه دارای نسخه جدیدتری است.

فرض کنید شماره نسخه پکیج در فایل

package.json
package.jsonدارای علامت caret باشد (مثلاً
^۲٫۶٫۲
^۲٫۶٫۲). در این صورت، NPM آخرین نسخه پکیج مدنظر را نصب می‌کند، که این موضوع ممکن است باعث شود تا برنامه نتایج اشتباه تولید کند.

اما اکنون فرض کنید کاربر برنامه ما را که حاوی فایل

package-lock.json
package-lock.json است کلون کرده است. در این صورت، NPM نسخه دقیق پکیج موردنظر را همانطور که در فایل
package-lock.json
package-lock.json ثبت شده است، صرف نظر از اینکه نسخه جدیدتری وجود دارد یا خیر،نصب خواهد کرد.

بنابراین، کاربران همیشه برنامه ما را به همان روشی که آن را در NPM registry منتشر کرده‌ایم دریافت می‌کنند. به عبارت دیگر، NPM از فایل

package-lock.json
package-lock.json برای قفل کردن وابستگی‌های پکیج ما به شماره نسخه‌های خاصی که برای توسعه پروژه استفاده کرده‌ایم، استفاده می‌کند.

توجه: زمانی که ما دستور

npm update
npm updateرا اجرا کنیم، NPM همه پکیج‌های ثبت شده در فایل
package-lock.json
package-lock.json را به‌روزرسانی می‌کند.

منظور از فایل
yarn.lock
yarn.lock
چیست؟

فایل

yarn.lock
yarn.lockسندی است که Yarn از آن برای ثبت نسخه دقیق همه پکیج‌هایی که به صورت محلی در دایرکتوری
node_modules
node_modulesپروژه خود نصب کرده‌ایم، استفاده می‌کند. که البته فایل
yarn.lock
yarn.lockبا فایل
lock-lock.json
lock-lock.jsonمربوط به NPM قابل مقایسه است.

همانطور که قبلاً اشاره کردیم Package Manager ما یک پکیج نصب شده را اجرا نمی‌کند، بلکه ما خودمان باید این کار را انجام دهیم. در ادامه بحث خواهیم کرد که چگونه باید این کار را انجام دهیم.

نحوه ران کردن یک پکیج قابل اجرا

راه‌های مختلفی برای ران کردن یک پکیج قابل اجرا وجود دارد. در ادامه تکنیک‌های استاندارد معرفی شده است.

پکیج مدنظر را به صورت دستی پیدا کرده و اجرا کنیم

یکی از راه‌های اجرا کردن این نوع پکیج‌ها این است که مسیر محلی آن را در خط فرمان خود تایپ کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
./node_modules/.bin/package-name
./node_modules/.bin/package-name
./node_modules/.bin/package-name

پکیج را به فیلد scripts در فایل
package.json
package.json
 اضافه کنیم

یکی از راه‌های جایگزین برای اجرای پکیج این است که ابتدا آن را به فیلد “scripts” در فایل

package.json
package.jsonپروژه خود اضافه کنیم، مانند:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "your_package",
"version": "1.0.0",
"scripts": {
"desired-name": "name-of-package-to-execute"
}
}
{ "name": "your_package", "version": "1.0.0", "scripts": { "desired-name": "name-of-package-to-execute" } }
{
  "name": "your_package",
  "version": "1.0.0",
  "scripts": {
    "desired-name": "name-of-package-to-execute"
  }
}

پس از آن، پکیج را می‌توانیم به صورت زیر اجرا کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm run desired-name
npm run desired-name
npm run desired-name

توجه داشته باشید که دستور بالا مخفف

npm run-script-and-name
npm run-script-and-nameاست.

همچنین اگر از Yarn استفاده می‌کنیم، می‌توانیم پکیج را به صورت زیر اجرا کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn run desired-name
yarn run desired-name
yarn run desired-name

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "codesweetly-app",
"version": "1.0.0",
"scripts": {
"build": "webpack",
}
}
{ "name": "codesweetly-app", "version": "1.0.0", "scripts": { "build": "webpack", } }
{
  "name": "codesweetly-app",
  "version": "1.0.0",
  "scripts": {
    "build": "webpack",
  }
}

دستور بالا webpack را به فیلد “scripts” در فایل

package.json
package.jsonما اضافه می‌کند. بنابراین، اکنون می‌توانیم webpack را در خط فرمان به صورت زیر اجرا کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm run build
npm run build
npm run build

و یا اگر از Yarn استفاده می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn run build
yarn run build
yarn run build

استفاده از NPX

یک راه سریع‌تر برای اجرای یک پکیج اجرایی استفاده از NPX مانند دستور زیر است:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npx package-name
npx package-name
npx package-name

با NPX، دیگر نیازی نیست پکیج خود را به فیلد “scripts” فایل

package.json
package.jsonپروژه خود اضافه کنیم.

(Node Package Execute) NPX یک اجراکننده پکیج Node است که به طور خودکار پکیج مشخصی را پیدا کرده و اجرا می‌کند.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npx webpack
npx webpack
npx webpack

دستور بالا به طور خودکار webpack را پیدا کرده و سپس اجرا می‌کند. بنابراین، ما نیازی به اضافه کردن ویژگی “build”:” webpack” به فیلد “scripts” فایل

package.json
package.json خود نداریم.

توجه: هنگام نصب Node 8.2/NPM 5.2.0 یا نسخه‌های بالاتر، NPX به طور خودکار روی سیستم ما نصب می‌شود.

همچنین می‌توانیم با استفاده از نسخه دلخواه Node.js بسیاری از کدها را اجرا کنیم. در ادامه به بررسی این موضوع می‌پردازیم.

نحوه اجرای کد با استفاده از نسخه دلخواه Node.js

برای این کار می‌توانیم از کاراکتر @ و پکیج نود npm برای تعیین نسخه Node.js که می‌خواهیم برای اجرای کد خود تعیین کنیم، استفاده کنیم.

مثلا:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npx node@7 index.js
npx node@7 index.js
npx node@7 index.js

دستور بالا به NPX می‌گوید که index.js را با آخرین نسخه Node از نسخه ۷ اصلی اجرا کند.

بطور کلی استفاده از دستور

node@
node@راهی مفید برای جلوگیری از استفاده از ابزارهای مدیریت نسخه Node.js مانند nvm برای جابجایی بین نسخه‌های Node به حساب می‌آید.

فرض کنید می‌خواهیم نسخه Node که NPX برای اجرای کد ما از آن استفاده می‌کند را تأیید کنیم. در این صورت دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npx node@7 -v
npx node@7 -v
npx node@7 -v

دستور بالا آخرین نسخه Node از نسخه ۷ اصلی که NPX برای اجرای کد ما استفاده می‌کند، به عنوان مثال نسخه ۷٫۱۰٫۱ را نشان خواهد داد.

نحوه بررسی پکیج‌های محلی منسوخ شده

برای تعیین اینکه آیا هر یک از پکیج‌های پروژه ما قدیمی و منسوخ شده هستند یا خیر، دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm outdated
npm outdated
npm outdated

اگر پس از اجرای دستور هیچ خروجی وجود نداشته باشد، به این معنی است که تمام پکیج‌های پروژه ما به‌روز هستند. در غیر این صورت، توضیح دقیق درمورد خروجی خط فرمان در این مقاله آورده شده است.

همچنین اگر از Yarn استفاده می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn outdated
yarn outdated
yarn outdated

توجه: برای بررسی وضعیت یک پکیج خاص، می‌توانیم نام پکیج را پس از کلمه کلیدی outdated اضافه کنیم. به عنوان مثال،

npm outdated lodash
npm outdated lodash.

نحوه بررسی پکیج‌های سراسری منسوخ شده

برای تشخیص اینکه کدام پکیج سراسری منسوخ شده است، دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm outdated -g --depth=0
npm outdated -g --depth=0
npm outdated -g --depth=0

نحوه بررسی پکیج‌های نصب شده به صورت محلی

سه راه برای بررسی پکیج‌های نصب شده به شکل محلی وجود دارد:

پکیج‌های نصب شده به صورت محلی همراه با وابستگی‌های آن‌ها

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm list
npm list
npm list

اگر از Yarn استفاده می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn list
yarn list
yarn list

پکیج‌های نصب شده به صورت محلی – بدون وابستگی‌های آن‌ها

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm list --depth=0
npm list --depth=0
npm list --depth=0

هنگام استفاده از Yarn:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn list --depth=0
yarn list --depth=0
yarn list --depth=0

بررسی این که آیا پکیج خاصی به صورت محلی نصب شده است یا خیر

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm list package-name
npm list package-name
npm list package-name

نحوه بررسی پکیج‌های نصب شده به شکل سراسری

سه راه برای بررسی ‌پکیج‌های نصب شده به شکل سراسری وجود دارد:

پکیج‌های نصب شده به شکل سراسری همراه با وابستگی‌های آن‌ها

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm list -g
npm list -g
npm list -g

اگر از Yarn استفاده می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn list -g
yarn list -g
yarn list -g

پکیج‌های نصب شده به شکل سراسری – بدون وابستگی‌های آن‌ها

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm list -g --depth=0
npm list -g --depth=0
npm list -g --depth=0

هنگام استفاده از Yarn:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn list -g --depth=0
yarn list -g --depth=0
yarn list -g --depth=0

بررسی این که آیا پکیج خاصی به شکل سراسری نصب شده است یا خیر

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm list -g package-name
npm list -g package-name
npm list -g package-name

نحوه به‌روزرسانی پکیج‌ها

در اینجا نحوه به‌روزرسانی پکیج‌ها با استفاده از NPM و Yarn را بررسی کرده‌ایم:

نحوه به‌روزرسانی یک پکیج خاص به آخرین نسخه آن

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm update package-name
npm update package-name
npm update package-name

اگر از Yarn استفاده کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn upgrade package-name
yarn upgrade package-name
yarn upgrade package-name

نحوه به‌روزرسانی تمام پکیج‌های نصب شده به شکل محلی در پروژه

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm update
npm update
npm update

هنگام استفاده از Yarn:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn upgrade
yarn upgrade
yarn upgrade

نحوه به‌روزرسانی یک پکیج خاص که به شکل سراسری نصب شده است

ما می‌توانیم یک پکیج خاص از پروژه را که به شکل سراسری نصب شده است، به صورت زیر به‌روزرسانی کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm update package-name -g
npm update package-name -g
npm update package-name -g

نحوه به‌روزرسانی تمام پکیج‌های نصب شده سراسری موجود در سیستم خود

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm update -g
npm update -g
npm update -g

نحوه حذف پکیج‌ها

در این قسمت نحوه حذف پکیج‌ها با استفاده از NPM و Yarn را بررسی کرده‌ایم:

نحوه حذف یک پکیج از یک پروژه خاص

ابتدا از طریق خط فرمان به دایرکتوری root پروژه خود می‌رویم و دستور زیر را اجرا می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm uninstall package-name
npm uninstall package-name
npm uninstall package-name

نکات مهمی که باید به آن‌ها توجه کنیم:

  • علامت S–(و یا
    --save
    --save) را برای حذف ارجاعات به پکیج، به فیلد dependencies در فایل
    package.json
    package.jsonپروژه خود اضافه می‌کنیم.
  • علامت D–(و یا
    –save-dev
    –save-dev) را برای حذف ارجاعات به پکیج، به فیلد devDependencies در فایل
    package.json
    package.jsonپروژه خود اضافه می‌کنیم.

برای پروژه‌هایی که با Yarn مدیریت می‌شوند:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn remove package-name
yarn remove package-name
yarn remove package-name

توجه: دستور yarn remove فایل‌های

package.json
package.jsonو
yarn.lock
yarn.lockپروژه را به طور خودکار به‌روزرسانی می‌کند.

نحوه حذف یک پکیج سراسری

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm uninstall package-name -g
npm uninstall package-name -g
npm uninstall package-name -g

باید به این موضوع توجه داشته باشیم که بهترین کار این است که پکیج‌ها را به صورت دستی از پوشه

node_modules
node_modulesحذف نکنیم. زیرا این عمل می‌تواند بر روی ماژول‌های(modules) پکیج‌های دیگر نیز تأثیر بگذارد.

اما منظور از ماژول(module) در NodeJS دقیقا چیست؟

منظور از ماژول در NodeJS دقیقا چیست؟

یک ماژول در NodeJS هر فایلی در پوشه

node_modules
node_modules است که کامپیوتر می‌تواند از طریق تابع
require()
require()نود آن را لود کند.

به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
const myModule = require("./codesweetly.js");
const myModule = require("./codesweetly.js");
const myModule = require("./codesweetly.js");

فرض می‌کنیم کامپیوتر با موفقیت از تابع

require()
require() برای لود کردن فایل
codesweetly.js
codesweetly.jsاستفاده کرده است. در چنین حالتی
codesweetly.js
codesweetly.js یک ماژول است که به متغیر myModule اختصاص داده شده است.

باید به خاطر داشته باشیم که یک ماژول ممکن است یک پکیج باشد، اما این موضوع همیشه صادق نیست.

اگر ماژول فایل

package.json
package.jsonبرای ثبت اطلاعات مورد نیازی که در آن استفاده می شود، نداشته باشد یک پکیج نیست. همچنین باید به این نکته توجه داشته باشیم برای اینکه یک ماژول توسط تابع
require()
require() قابل لود باشد، ماژول باید یکی از موارد زیر باشد:

  • یک پکیج، که فایل json حاوی یک فیلد “main” است
  • یک فایل جاوااسکریپت

نحوه منتشر کردن پروژه خود در NPM Registry

NPM یک رجیستری رایگان برای نویسندگان پکیج‌های عمومی است. بنابراین می‌توانیم از آن برای انتشار هر پروژه‌ای از کامپیوتر خود که دارای فایل

package.json
package.json است، استفاده کنیم.

در ادامه مراحلی که برای به اشتراک گذاشتن پروژه خود نیاز داریم، معرفی شده است:

گام اول: ورود به حساب کاربری یا ایجاد آن

به وب‌سایت NPM مراجعه می‌کنیم و وارد حساب کاربری خود می‌شویم (اگر هنوز حساب کاربری نداریم، ثبت نام می‌کنیم).

توجه: حتما باید مطمئن شویم که ایمیل خود را پس از ایجاد یک حساب کاربری جدید تایید کرده باشیم. در غیر این صورت هنگام انتشار پکیج خود با خطای ۴۰۳ Forbidden مواجه خواهیم شد.

گام دوم: ورود به حساب کاربری

از طریق خط فرمان و دستور زیر به حساب کاربری NPM خود وارد می‌شویم، مانند:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm login
npm login
npm login

توجه: می توانیم برای بررسی اینکه آیا در حال حاضر وارد حساب خود شده‌ایم یا خیر، از دستور

npm whoami
npm whoamiاستفاده کنیم.

گام سوم: پکیج مدنظر خود را منتشر می‌کنیم

به دایرکتوری root پروژه خود می‌رویم و آن را به صورت زیر منتشر می‌کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm publish
npm publish
npm publish

باید از این موضوع مطمئن شویم که در NPM پکیج با نام‌گذاری مشابه وجود نداشته باشد. در غیر این صورت هنگام انتشار با خطا مواجه خواهیم شد.

اگر میخواهیم بررسی کنیم که آیا نام مدنظر ما قبلاً در NPM وجود داشته یا خیر، می‌توانیم از فرمان جستجوی npm (یا نوار جستجوی در وب‌سایت NPM) برای این کار استفاده کنیم.

فرض کنید همه نام‌های مناسب برای پکیج ما قبلاً گرفته شده است. در این صورت، NPM به ما این امکان را می‌دهد پروژه خود را تحت عنوان یک محدوده(scope) منتشر کنیم. به عبارت دیگر، می‌توانید پکیج خود را به عنوان زیرمجموعه نام کاربری خود منتشر کنیم.

نحوه انتشار پکیج خود تحت عنوان محدوده نام کاربری خود

فایل

package.json
package.jsonخود را باز می‌کنیم و نام کاربری خود را به عنوان پیشوند نام پکیج خود قرار می‌دهیم.

مثلا:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "@username/package-name",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
{ "name": "@username/package-name", "version": "1.0.0", "main": "index.js", "license": "MIT" }
{
  "name": "@username/package-name",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT"
}

تنظیمات پیش‌فرض NPM به این صورت است که یک پکیج با نام محدوده را پروژه خصوصی درنظر می‌گیرد. بنابراین، اگر از دستور

npm publish
npm publishبرای به اشتراک گذاشتن پکیج با نام محدوده استفاده کنیم، با خطا مواجه خواهیم شد.

بنابراین، برای انتشار پکیج خود به عنوان محدوده نام کاربری،  علامت

--access=public
--access=publicرا به دستور
npm publish
npm publish اضافه کنید:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm publish --access=public
npm publish --access=public
npm publish --access=public

توجه: می‌توانیم با استفاده از دستور

npm init --scope=username
npm init --scope=usernameبه جای
npm init
npm init، پروژه خود را در همان مرحله مقداردهی اولیه به یک پکیج scoped تبدیل کنیم.

جمع‌بندی

این مقاله به این موضوع که Package Manager چیست پرداختیم. همچنین نحوه کار دو package manager محبوب یعنی NPM و Yarn را بررسی کردیم.

 

منبع

دیدگاه‌ها:

افزودن دیدگاه جدید