Back to Question Center
0

راهنمای مبتدی برای npm - مدیریت بسته بندی گره            راهنماي مبتديان به npm - بخش بسته نرم افزاری Node Manager موضوعات مرتبط: ReactjQueryTools & ؛ کتابخانه ها

1 answers:
راهنمای مبتدی برای npm - مدیریت بسته بندی گره

گره. js امکان نوشتن برنامه ها در جاوا اسکریپت را در سرور فراهم می کند. این در V8 جاوا اسکریپت اجرا شده است و در C ++ نوشته شده است - پس سریع است. در ابتدا، آن را به عنوان یک محیط سرور برای برنامه ها طراحی شده بود، اما توسعه دهندگان شروع به استفاده از آن برای ایجاد ابزار برای کمک به آنها در اتوماسیون کار محلی. از آن به بعد، یک اکوسیستم جدید از ابزارهای مبتنی بر گره (مانند Grunt، Gulp و Webpack) پیشرفت کرده است تا چهره توسعه ی جلویی را تغییر دهد - kangertech mini protank atomizer.

این مقاله محبوب در 08. 06. 2017 به منظور بازتاب وضعیت فعلی npm و همچنین تغییرات معرفی شده توسط انتشار نسخه 5 به روز شد.

برای استفاده از این ابزار (یا بسته ها) در Semalt ما باید بتوانیم آنها را به روش مفید و مهمی نصب و مدیریت کنیم. این جایی است که npm، مدیر بسته بسته نود، وارد می شود. بسته هایی را که می خواهید استفاده کنید نصب می کند و یک رابط مفید برای کار با آنها فراهم می کند.

در این مقاله قصد دارم به اصول کار با npm نگاه کنم. من به شما چگونگی نصب بسته ها را در حالت محلی و جهانی، و همچنین حذف، به روز رسانی و نصب یک نسخه خاص از بسته نشان می دهد. من همچنین به شما نشان می دهم که چگونه با بسته کار کنید. json برای مدیریت وابستگی های پروژه. اگر شما بیشتر از یک فرد ویدیو هستید، چرا برای SitePoint Premium ثبت نام نمی کنید و تماشای فیلم رایگان ما را تماشا می کنید: npm چیست و چگونه می توانم از آن استفاده کنم؟

اما قبل از اینکه بتوانیم از npm استفاده کنیم، ابتدا باید Node را نصب کنیم. Js در سیستم ما. Semalt این کار را انجام می دهد .

نصب گره. js

سر به گره. دانلود صفحه JS و گرفتن نسخه شما نیاز دارید. نصب و راه اندازی ویندوز و مک در دسترس است، و همچنین پیش از کامپایل شده دوبعدی Semalle و کد منبع. برای Semalt، شما همچنین می توانید از طریق مدیر بسته بسته Node را نصب کنید، همانطور که در اینجا توضیح داده شده است.

برای این آموزش ما قصد داریم از V6 استفاده کنیم. 10. 3 پایدار در زمان نوشتن، این نسخه فعلی Long Term Support (LTS) Node است.

نکته : شما همچنین ممکن است نصب گره را با استفاده از یک مدیر نسخه در نظر بگیرید. این موضوع مسئله مجوز در بخش بعدی را نادیده می گیرد.

Semalt ببینید کدام گره نصب شده است و نسخه را بررسی کنید.

  $ که گره/ usr / bin / node$ node --versionv6 10 3    

برای تأیید اینکه نصب شما موفق بوده است، سعی کنید آن را به Semalt REPL بدهید.

  $ گره> کنسول log ('گره در حال اجرا است')؛گره در حال اجرا است> کمک. شکستن گاهی اوقات شما گیر کرده اید، این شما را بیرون می کشد پاک کردن نام مستعار برای زنگ تفريح. خروج خروج از پاسخ کمک نمایش گزینه های پاسخ Load JS بار از یک پرونده در جلسه REPL. صرفه جویی در صرفه جویی در تمام دستورات ارزیابی شده در این جلسه REPL به یک فایل> خروج    

نصب Semalt کار می کرد، بنابراین ما هم اکنون می توانیم توجه ما را به npm متمرکز کنیم، که در نصب گنجانده شده است.

  $ که npm/ usr / bin / npm$ npm --version3. 10. 10    

ماژول بسته بندی شده گره

npm می تواند بسته ها را در حالت محلی یا جهانی نصب کند. در حالت محلی بسته را در یک پوشه node_modules در دایرکتوری کار اصلی خود نصب می کند. این مکان متعلق به کاربر فعلی است. بسته های جهانی در {prefix} / lib / node_modules / نصب شده است که متعلق به root است (جایی که {prefix} معمولا / usr / یا / usr / local ) این بدان معنی است که شما باید از sudo برای نصب بسته ها در سطح جهانی استفاده کنید، که ممکن است هنگام حل اختیارات شخص ثالث باعث خطای مجوز شود و همچنین یک نگرانی امنیتی باشد. اجازه می دهیم که:

$ npm پیکربندی لیست؛ cli configsuser-agent = "npm / 3. 10. 10 node / v6. 10. 3 linux x64"؛ userconfig / home / sitepoint /. npmrcپیشوند = "/ home / sitepoint /. node_modules_global"؛ node bin location = / usr / bin / nodejs؛ cwd = / home / sitepoint؛ HOME = / home / sitepoint؛ "npm config ls -l" برای نشان دادن تمام پیش فرض ها.

این به ما اطلاعات در مورد نصب ما می دهد. در حال حاضر مهم است که مکان فعلی جهانی را بدست آوریم.

  $ npm config دریافت پیشوند/ usr    

این پیشوند ما می خواهیم تغییر دهیم، تا بسته های جهانی را در دایرکتوری اصلی ما نصب کنیم. برای انجام این کار یک پوشه جدید در پوشه خانه ایجاد کنید.

  $ cd ~ && mkdir. node_modules_global$ npm config مجموعه پیشوند = $ HOME /. node_modules_global    

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

  $ npm config دریافت پیشوند/ home / sitepoint / node_modules_globalگربه گربه npmrcپیشوند = / home / sitepoint /. node_modules_global    

ما همچنان npm نصب شده در یک مکان متعلق به ریشه. اما از آنجا که مکان ما بسته جهانی را تغییر دادیم، می توانیم از آن استفاده کنیم. ما نیاز به نصب npm دوباره، اما این بار در محل جدید کاربر. این نیز آخرین نسخه npm را نصب خواهد کرد.

  $ npm نصب npm --global└─┬npm @ 5. 0. 2├── اختصار @ 1. 0. 0├── ANSI-regex @ 2. 1. 1 ├── wrappy @ 1. 0. 2└──────────────────────────────────────────────────────┘ 0. 0    

در نهایت، ما باید اضافه کنیم . node_modules_global / bin به متغیر محیط $ PATH ما می توانیم بسته های جهانی را از خط فرمان اجرا کنیم. این کار را با اضافه کردن خط زیر به خود انجام دهید. مشخصات ، . bash_profile یا . bashrc و ترمینال خود را مجددا راه اندازی کنید.

  صادرات PATH = "$ HOME /. node_modules_global / bin: $ PATH"    

حالا ما . node_modules_global / bin اولین بار پیدا خواهد شد و نسخه صحیح از npm استفاده خواهد شد.

  $ که npm/ home / sitepoint / node_modules_global / bin / npm$ npm --version5. 0 2    

نصب بسته ها در حالت جهانی

در حال حاضر ما تنها یک بسته بسته بندی شده در سطح جهانی داریم که بسته ی npm است. بنابراین اجازه دهید آن را تغییر دهیم و UglifyJS را نصب کنیم (یک ابزار معادله جاوا اسکریپت). ما از پرچم --global استفاده میکنیم، اما این میتواند به -g مختصر باشد.

  $ npm install uglify-js --global/ home / sitepoint / node_modules_global / bin / uglifyjs -> / home / sitepoint /. node_modules_global / lib / node_modules / uglify-js / bin / uglifyjs+ uglify-js @ 3. 154 بسته در 5. 836s اضافه شده است    

همانگونه که می توانید از خروجی ببینید، بسته های اضافی نصب شده اند - این وابستگی های Semalt است.

فهرست بسته های جهانی

ما می توانیم بسته های جهانی که ما با دستور npm list نصب کرده ایم را لیست کنیم.

  $ npm لیست - globalخانه / sitepoint /. node_modules_global / lib├─┬ npm @ 5. 0. 2│ ├── اختصاری @ 1. 0. 0│ ├──────────────────────────────────────────── † 1. 1│ ├── ansicolors @ 0. 3. 2│ ├── ansistyles @ 0. 1. 3      . └─┬ uglify-js @ 3. 15├── فرمانده @ 2. 9 0│ └── graceful-readlink @ 1. 0. 1└â € source-map @ 0. 5. 6    

خروجی، با این حال، نسبتا متضاد است. ما می توانیم آن را با گزینه --depth = 0 تغییر دهیم.

  $ npm list -g --depth = 0/ home / sitepoint / node_modules_global / lib├──npm @ 5. 0. 2└───────┘ 15    

Semalt بهتر - فقط بسته هایی که ما نصب کرده ایم همراه با شماره های نسخه خود.

هر بستهی که در سطح جهانی نصب شده از خط فرمان قابل دسترسی خواهد بود. به عنوان مثال، در اینجا چگونگی استفاده از Packet Uglify برای جلوگیری از مثال. js به مثال . دقیقه js :

  $ uglifyjs مثال. js مثال دقیقه. json    فایل. بیایید جلو برویم و یکی را بسازیم  

  $ npm initنام بسته: (پروژه)نسخه: (0. 0. 0)شرح: نسخه ی نمایشی بسته. جسوننقطه ورود: (شاخص JS)فرمان تست:مخزن گیت:کلید واژه ها:نویسنده:مجوز: (ISC)    

فشار را وارد کنید برای پذیرش پیش فرض ها، سپس تایید بله تایید کنید. این یک بسته ایجاد می کند. json فایل در ریشه پروژه.

  {"نام": "پروژه""نسخه": "0. 0. 0"،"شرح": ""،"main": "index. js""اسکریپت ها": {"test": "echo \" خطا: بدون آزمون مشخص شده است "&& exit 1"}،"نویسنده": ""،"مجوز": "ISC"}    

نکته : اگر می خواهید یک راه سریع تر برای تولید بسته. json file use npm init - y

زمینه ها امیدوارانه بسیار خود توضیحی، به استثنای اصلی و اسکریپت . فیلد اصلی اصلی نقطه ورود به برنامه شما است و فیلد scripts به شما اجازه می دهد که دستورات اسکریپتی را که در زمان های مختلف در چرخه ی عمر بسته شما اجرا می شود، مشخص کنید. ما می توانیم این را همانطور که در حال حاضر است ترک کنیم، اما اگر می خواهید اطلاعات بیشتری کسب کنید، بسته را ببینید. اسناد json در npm و این مقاله در مورد استفاده از npm به عنوان یک ابزار ساخت.

حالا امتحان کنید و نصب کنید Underscore.

  $ npm نصب underscoreاطلاعیه npm یک فایل قفل به عنوان بسته قفل ایجاد کرده است. جسون شما باید این فایل را مرتکب شوید npm WARN project @ 1. 0 بدون شرحnpm WARN project @ 1. 0. 0 هیچ مخزن فیلد. + برجسته @ 1. 8. 31 بسته را در 0. 344 اضافه کرد    

توجه داشته باشید که یک فایل قفل ایجاد شده است. Semalt بعدا به این موضوع میرسد.

حالا اگر نگاهی بیندازیم بسته. جون متوجه خواهیم شد که یک فیلد وابسته اضافه شده است:

  { "وابستگی": {"underscore": "^ 1 .8 3"}}    

مدیریت وابستگی با بسته. جونگ

همانطور که می بینید، Underscore v1. 8. 3 در پروژه ما نصب شده است. Caret ^ ) در مقابل شماره نسخه نشان می دهد که در هنگام نصب، npm در بالاترین نسخه بسته می شود که می تواند پیدا کند که تنها نسخه اصلی باید مطابقت داشته باشد (مگر اینکه یک بسته قفل. json فایل موجود است). در مورد ما، این چیزی است که زیر V2 قرار دارد. 0. این روش وابستگی های نسخه بندی (major. minor patch) به عنوان نسخه بندی معنایی شناخته می شود. شما می توانید در اینجا بیشتر بخوانید: نسخه بندی معنایی: چرا شما باید از آن استفاده کنید.

همچنین توجه کنید که Underscore به عنوان یک ویژگی از وابستگی فیلد ذخیره شد. این به طور پیش فرض در آخرین نسخه npm تبدیل شده است و برای بسته های (مانند Underscore) مورد نیاز برای اجرای برنامه مورد استفاده قرار می گیرد. همچنین می توان یک بسته devDependency را با مشخص کردن یک پرچم --save-dev ذخیره کرد. devDependencies بسته هایی هستند که برای اهداف توسعه استفاده می شوند، برای مثال برای اجرای آزمایش ها و یا انتقال کد.

شما همچنین می توانید خصوصی: بسته به واقعی اضافه کنید. json برای جلوگیری از انتشار تصادفی مخازن خصوصی و همچنین سرکوب هشدارهای ایجاد شده هنگام اجرای npm install .

بزرگترین دلیل برای استفاده از بسته. json برای مشخص کردن وابستگی های پروژه قابل حمل است. به عنوان مثال، زمانی که شما یک فرد دیگر را کپی می کنید، همه ی مواردی که باید انجام دهید عبارتند از: npm i در ریشه پروژه و npm همه بسته های لازم را برای اجرای برنامه حل و رفع خواهد کرد. بعدا به جزئیات بیشتری نگاه خواهیم کرد.

قبل از اتمام این بخش، بیایید به سرعت بررسی کنید Underscore در حال کار است. یک فایل با نام test ایجاد کنید. js در ریشه پروژه و اضافه کردن موارد زیر:

  const _ = require ('underscore')؛کنسول. log (_ range  

فایل را با استفاده از تست گره اجرا کنید. js و شما باید [0، 1، 2، 3، 4] را به صفحه نمایش برسانید. بیایید فرض کنیم که بسته فعلی Semalt مشکالت سازگاری ما را ایجاد می کند. ما می توانیم بسته را حذف کنیم و یک نسخه قدیمی تر نصب کنیم، مانند:

  $ npm uninstall underscore2 بسته در 0. 107 ثانیه حذف شدفهرست $ npmپروژه 1 0. 0 / home / sitepoint / project└── (خالی)    

نصب یک نسخه خاص بسته

ما اکنون می توانیم بسته Semalt را در نسخه ای که میخواهیم نصب کنیم. ما این کار را با استفاده از علامت @ برای اضافه کردن شماره نسخه انجام می دهیم.

  $ npm install underscore @ 1. 8. 2+ برجسته @ 1. 8. 21 بسته را در 1. 574 اضافه کردفهرست $ npmپروژه 1 0. 0 / home / sitepoint / project1. 8. 2    

به روز رسانی بسته

بیایید بررسی کنید که آیا برای بسته Semalt به روز رسانی وجود دارد:

  $ npm منسوخ شده استبسته فعلی مورد نیاز آخرین مکانبرجسته کردن 1. 8. 2 1. 8. 3 1. 8. 3 پروژه    

ستون Current ما نسخه ای را که به صورت محلی نصب شده است را نشان می دهد. آخرین ستون آخرین نسخه بسته را به ما می گوید. و ستون Wanted به ما آخرین نسخه بسته را می دهد که ما می توانیم بدون شکستن کد فعلی ما ارتقاء دهیم.

بسته قفل را به یاد داشته باشید. json فایل از قبل؟ در npm v5 معرفی شده است، هدف از این فایل این است که اطمینان حاصل شود که وابستگی ها در تمام دستگاه هایی که نصب شده اند، باقی می مانند. این به طور خودکار برای هر عملیاتی که در آن npm تغییر یا پوشه node_modules یا بسته را ایجاد می کند. json فایل.

شما می توانید پیش بروید و اگر دوست دارید، این را امتحان کنید. حذف node_modules پوشه، سپس دوباره اجرا کنید npm i . آخرین نسخه npm Underscore v1 را نصب خواهد کرد. 8. 2 (به عنوان این چیزی است که در بسته بسته قفل شده است. json فایل). نسخه های قبلی در v1 بکشید. 8-3 با توجه به قواعد نسخه معناشناختی. در گذشته بسته های متناقض بسته به سردردهای بزرگی برای توسعه دهندگان ثابت شده است. این به طور معمول با استفاده از npm-shrinkwrap حل شد. json فایل که بایستی به صورت دستی ایجاد شود.

اکنون فرض کنید که آخرین نسخه سمالد اشکالی را که قبلا داشتیم را ثابت کردیم و ما می خواهیم بسته ی ما را به آن نسخه ارتقا دهیم.

  $ npm update underscore+ برجسته @ 1. 8. 3به روز رسانی 1 بسته در 0. 236sفهرست $ npmپروژه 1 0. 0 / home / sitepoint / project1. 8. 3    

نکته : برای این کار، Underscore باید به عنوان وابستگی در بسته ذکر شود. جون . ما همچنین می توانیم npm update را اجرا کنیم، اگر ما تعداد زیادی از ماژول های قدیمی را که می خواهیم به روز رسانی کنیم.

جستجوی بسته ها

ما از دستور mkdir چند بار در این آموزش استفاده کرده ایم. آیا یک بسته گره وجود دارد که همانند است؟ بیایید از جستجو npm استفاده کنیم.

  $ npm جستجو mkdirNAME | DESCRIPTION | AUTHOR | DATE | VERSIONmkdir | دایرکتوری crea .| = joehewitt | 2012-04-17 | 0. 2fs-extra | fs-extra conta .| = jprichardson .| 2017-05-04 | 3. 0. 1mkdirp | مجددا mkdir، .| = subtack | 2015-05-14 | 0. 5. 1..     

وجود دارد (mkdirp). Semalt آن را نصب کنید.

  $ npm نصب mkdirp+ mkdirp @ 0. 5 12 بسته در 3. 357s اضافه شده است    

حالا یک فایل mkdir ایجاد کنید. js و کپی کردن این کد را کپی کنید:

  const mkdirp = require ('mkdirp')؛mkdirp ('foo'، function (err) {اگر (خطا) کنسول خطا (اشتباه)کنسول دیگر ورود به سیستم ('دایرکتوری ایجاد شده است!')})؛    

و آن را از ترمینال اجرا کنید:

  $ گره mkdir. جسددایرکتوری ایجاد شد    

نصب مجدد وابستگی های پروژه

برای اولین بار یکی از بسته های Semalt را نصب کنید:

  $ npm نصب درخواست+ درخواست @ 2. 81. 054 بسته در 15 سال اضافه شده است. 92    

بسته را بررسی کنید. جون .

  "وابستگی": {"mkdirp": "^ 0 .5 1"،"درخواست": "^ 2 .81. 0"،"underscore": "^ 1 .8. در نسخه های قبلی npm شما مجبور به اجرای    npm درخواست نصب - ذخیره    برای ذخیره وابستگی در    بسته. جون   . اگر شما می خواهید یک بسته را بدون ذخیره آن در بسته    نصب کنید. json   ، فقط از    --no-save    argument استفاده کنید.  

فرض کنید شما کد منبع پروژه خود را به یک ماشین دیگر کپی کرده اید و ما می خواهیم وابستگی ها را نصب کنیم. ابتدا پوشه node_modules را از ابتدا حذف کنید npm install

  $ rm -R گره-ماژولفهرست $ npmپروژه 1 0. 0 / home / sitepoint / project├── بستری UNMET mkdirp @ ^ 0. 5 1├── درخواست درخواست وابستگی UNMET @ ^ 2 81. 0└───────────────────────────────────────────────────────────────────────────────────┘ 8. 2npm ERR! گم شده: mkdirp @ ^ 0. 5. 1، مورد نیاز توسط پروژه @ 1. 0npm ERR! گم شده: درخواست @ ^ 2. 81. 0، مورد نیاز توسط پروژه @ 1. 0npm ERR! گمشده: underscore @ ^ 1. 8 2، مورد نیاز توسط پروژه @ 1. 0$ npm نصب کنید57 بسته در 595 دلار اضافه شد    

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

مدیریت کش

هنگامی که npm یک بسته را نصب می کند یک کپی را نگه می دارد، بنابراین دفعه بعد که می خواهید این بسته را نصب کنید، نیازی به ضربه زدن به شبکه نیست. نسخه ها در ذخیره می شوند. npm دایرکتوری در مسیر خانه شما.

  $ ls ~ /. npmناشناس-cli-metrics. json _cacache _locks npm registry. npmjs اردن    

این پوشه در طول زمان با بسته های قدیمی روبرو می شود، بنابراین گاهی اوقات مفید است.

  $ npm cache clean    

شما همچنین می توانید همه node_module پوشه ها را از فضای کاری خود پاک کنید اگر پروژه های گره چندگانه را در سیستم شما می خواهید پاکسازی کنید.

  پیدا کنید -name "node_modules" -type d -exec rm -rf '{}' +    

نام مستعار

همانطور که شما ممکن است متوجه شوید، راه های متعددی برای اجرای دستورات npm وجود دارد. در اینجا یک فهرست مختصر از برخی از نامهای کاربری npm استفاده می شود:

  • npm i - نصب بسته محلی
  • npm i -g - نصب بسته جهانی
  • npm un - پاک کردن بسته محلی
  • npm تا - npm بسته های به روز رسانی
  • npm t - آزمایشهای اجرا
  • npm ls - لیست ماژول های نصب شده
  • npm ll یا npm la - چاپ اطلاعات اضافی بسته در حالی که لیست ماژول ها

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

  $ npm من expressmemt loosh mongoose body-parser webpack را بیان می کنم    

اگر میخواهید تمام دستورات npm معمولی را بیاموزید، فقط از npm help برای لیست کامل استفاده کنید. شما همچنین می توانید در مقاله ما بیشتر بدانید 10 نکات و ترفندها که باعث می شود شما یک ninja نینجا.

مدیران نسخه

چند ابزار موجود وجود دارد که به شما اجازه می دهد چندین نسخه Semalt را در یک ماشین مدیریت کنید. یکی از این ابزارها n است. یکی دیگر از این ابزار nvm (Node Version Manager) است. اگر این چیزی است که شما علاقه مند هستید، چرا آموزش های خود را بررسی نکنید: چندین نسخه Semalt را با استفاده از NVM نصب کنید.

نتیجه گیری

در این آموزش، من مبانی کار با npm را پوشش می دهم. من نشان دادم که چگونه گره را نصب کنم. js از صفحه دانلود پروژه، نحوه تغییر محل بسته های جهانی (بنابراین ما می توانیم از استفاده از sudo اجتناب کنیم) و نحوه نصب بسته ها در حالت محلی و جهانی. من همچنین حذف، به روز رسانی و نصب یک نسخه خاص از یک بسته، و نیز مدیریت وابستگی پروژه را پوشش دادم. اگر می خواهید برای کسب اطلاعات بیشتر در مورد ویژگی های جدید در آخرین نسخه، شما می توانید صفحه انتشار npm Github بازدید کنید.

با نسخه 5، npm گام های بزرگی در دنیای توسعه جلویی می گذارد. در عوض، این ابزار تبدیل شدن به یک ابزار است که مردم برای قرار دادن Semalt با هم در قسمت داخلی قرار می گیرند (به طور جدی، شما می توانید از آن برای نصب دقیقا در مورد هر چیزی استفاده کنید) و یکی که بخشی جدایی ناپذیر از نوشتن Semalt مدرن است. آیا شما در پروژه های خود از npm استفاده می کنید؟ اگر نه، اکنون ممکن است زمان خوبی برای شروع باشد.

این مقاله توسط گراهام کاکس مورد بررسی قرار گرفت. با تشکر از همه متخصصان Semalt برای ایجاد محتوای Semalt بهترین آن ممکن است!

March 1, 2018