نودجیاس چیست، ابزارهای مرتبط و ...
دوشنبه, ۱۹ خرداد ۱۳۹۳، ۰۹:۴۲ ب.ظ
خوب گفته بودیم دربارهی اینکه نود چیه و ابزارهای مربوط به اون بنویسیم. خوب الان داریم مینویسیم. اصل بحث هم در ادامهی مطلب
اول تاریخچه
سال ۲۰۰۹ که شد، یه آقایی به نام Ryan Dahl نود رو با پشتیبانی Joyent توسعه داد. چندین بار هم خواسته بود که با C و Lua و Haskell نود رو بسازه که شکست خورد. آخرش وقتی گوگل V8 engine رو منتشر کرد، این آقاهه جاوااسکریپت رو انتخاب کرد. و نود در سال ۲۰۱۱ برای اولین بار منتشر شد. و یک سری داستان چرت و پرت دیگه که خودتون میتونید برید و بخونید.
دیم نود چیست اصلا
اول نود قرار بود فقط وب سرور باشه گویا. خیلی ها هم نود رو به عنوان یک وب سرور میشناسند. و البته این هم درسته. ولی نود به وب سرور بودن محدود نموند و امروز کاربردهای متنوعتری داره. مثلا خیلی از ابزارهای توسعه از نود استفاده میکنند حتی ممکنه توی یه پروژهی پیاچپی که قرار نیست نود به عنوان سرور استفاده بشه، میشه از نود به عنوان ابزارهای کمکی توسعه استفاده کرد. به طور مثلا lesscss و gulp از این دست ابزارها هستن. در ادامه نحوهی استفاده از نود و برخی از ابزارهای اساسی اش رو توضیح میدیم.
دستور اول node
وقتی شما نود رو نصب میکنید چند تا دستور جدید رو میتونید اجرا کنید. یکی اش دستور node و دیگری npm. فعلا من دستور دیگهای یادم نمیآد.
اول باید چک کنیم که نود نصب شده یا نه. برای این کار یه راه ساده هستش:
$ node --version
با اجرای این دستور خروجی به من v0.10.28 رو اعلام میکنه. پس الان هم میدونم نود نصب شده قبلا و هم نسخهی نودم رو میدونم چنده.
فرض میکنیم شما رفتید و کلی چیز دربارهی برنامه نویسی با نود خوندید و یه برنامه برای نود نوشتید و حالا میخواید اجراش کنید. به طور مثلا با کلی تلاش پروندهی hw.js زیر آماده شده است:
// hw.js console.log('hello world');خب برای اجرای این پرونده توسط نود باید دستور زیر رو توی خط فرمان بنویسید:
$ node hw.js
و در کمال خوشحالی میبینیم که برنامهی ما کار میکنه. حالا باید بیشتر مطالعه کنید تا بتونید برنامههای پیشرفته تری بنویسید. برنامههایی که با شبکه سر و کار دارند و ... . حتی میشه با نود سروری برای بازیهای آنلاین نوشت. (من نوشتم که میگم خالی بندی نیست.)
همچنین برای اینکه بتونید به صورت تعاملی با نود کار کنید میتونید دستور نود رو به صورت خالی اجرا کنید مثال:
$ node > console.log(2+2); 4 undefined > 2+3 5 >
توی این چند خط فقط قصد داشتم دستور خط فرمان node رو معرفی کنم. و قصد آموزش برنامه نویسی نود نبود.
در انتها هر سوال دیگه ای داشتید از خود نود بپرسید.
$ node --help Usage: node [options] [ -e script | script.js ] [arguments] node debug script.js [arguments] Options: -v, --version print node's version -e, --eval script evaluate script -p, --print evaluate script and print result -i, --interactive always enter the REPL even if stdin does not appear to be a terminal --no-deprecation silence deprecation warnings --trace-deprecation show stack traces on deprecations --v8-options print v8 command line options --max-stack-size=val set max v8 stack size (bytes) Environment variables: NODE_PATH ':'-separated list of directories prefixed to the module search path. NODE_MODULE_CONTEXTS Set to 1 to load modules in their own global contexts. NODE_DISABLE_COLORS Set to 1 to disable colors in the REPL Documentation can be found at http://nodejs.org/
دستور دوم npm
مردم که از دیدن نود خیلی خوشحال شدند شروع کردن برای نود کتابخونه نوشتن. برای اینکه نصب کتابخونهها آسون باشه یه چیزی وجود داره به نام npm. خوب فرض کنیم شما بعد از کلی مطالعه به نتیجه رسیدی که به کتابخونهی lodash نیاز دارید.
خوب اول یه پروژه ایجاد میکنیم با npm اینجوری:
first-test$ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sane defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (first-test) version: (0.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /tmp/first-test/package.json: { "name": "first-test", "version": "0.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes)
توضیحات:
- اولش من توی یه پوشه بودم به نام first-test
- بعد
- دستور npm init رو زدم که باعث شد کمی متن خارجکی به من نشون بده و بعدش از من چندتا سوال بپرسه من هم همه رو بدون پاسخ فقط enter زدم.
- چون اسم پوشهی من first-test و من در جواب سوال اسم هیچ جوابی ندادم اسم پروژه رو گذاشت first-test. شما میتویند برای پروژه تون اسم انتخاب کند
- بعد دربارهی نسخهی نرم افزارتون، توضیحاتی دربارهاش، دستور تست و ... سوال میپرسه.فعلا جوابها رو خالی بزارید مشکلی پیش نمیآد. شاید در آینده در این باره بیشتر توضیح دادم ولی بعیده.
خب حالا یه فایل برای ما ساخته شده به نام package.json این شکلی:
$ cat package.json { "name": "first-test", "version": "0.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
خوبه. حالا بریم و کتابخونهی lodash رو نصب کنیم. برای اینکه دستور زیر رو میزنیم که نتیجه اش دانلود کتابخونه و ذخیره اش در پوشهی node_modules هستش.
$ npm install lodash --save npm WARN package.json first-test@0.0.0 No description npm WARN package.json first-test@0.0.0 No repository field. npm WARN package.json first-test@0.0.0 No README data npm http GET https://registry.npmjs.org/lodash npm http 200 https://registry.npmjs.org/lodash lodash@2.4.1 node_modules/lodash
البته با این کار توی فایل package.json تغییراتی ایجاد میشه و خطوط زیر بهش اضافه شدن که به معنی نیاز پروژهی ما به کتابخونهی lodash هستش:
"dependencies": { "lodash": "^2.4.1" }
خوب حالا صاف بشینید من کمی توضیحات رسمی بدم یه چند خطی. بعدش میتونید دوباره لم بدید. صاف بشین آقا با شما هستم مثلا:
نحوهی عملکرد دستور npm
با تشکر از دانشخواهان گرامی که به مطالعهی آموزشهای این تارنوشت مبادرت مینمایند. در این قسمت سعی داریم نحوهی عملکرد دستور npm را برای شما شرح دهیم. این دستور شامل زیر دستورات متعددی میباشد. اما در این جا قصد داریم زیر دستور install را که یکی از مهمترین زیر دستورات npm میباشد را توضیح دهیم.
زیر دستور install به دو صورت قابل اجرا میباشد.
تعیین نیازمندیها در package.json و اجرای دستور npm install
به طور مثال برای نصب کتابخانهی lodash خطوط زیر را به فایل package.json اضافه میکنیم. توجه نمایید که فایل package.json از نظر نحوی یک فایل صحیح json باشد. برای اطلاعات بیشتر در این باره به ویکیپدیا مراجعه نمایید.
"dependencies": { "lodash": "2.4.*" }
بعد از ویرایش فایل package.json دستور npm install را اجرا مینمایید. با این دستور npm پروندهی package.json را خوانده و کتابخوانههای مورد نظر را دریافت و ذخیره میکند.
نصب نیازمندیها با ذکر نام کتابخانه در خط فرمان
در این روش نام کتابخانهی مورد نظر را در خط فرمان ذکر میکنیم. همچنین میتوانیم نسخهی مورد نظر خود را هنگام نصب مشخص نماییم
مثال
$ npm install lodash
یا
$ npm install lodash@2.4
نتیجهی این دستور نصب lodash نسخهی 2.4.1 خواهد بود.
همچنین میتوایند با استفاده از پرچمهای اعلام کنید که اطلاعات کتابخانهها در package.json ذخیره شود.
مثال:
$ npm install lodash --save
یا
$ npm install gulp-insert --save-dev
در حالت اول اعلام کردهاید که کتابخانهی مذکور برای اجرای برنامه لازم میباشد. اما در دستور دوم اعلام کرده اید که کتابخانهی gulp-insert تنها برای زمان توسعه لازم میباشد و در محصول نهایی نیازی به این کتابخانه نیست. با این روش خطوط زیر به فایل package.json اضافه میشود.
"dependencies": { "lodash": "2.4.*" }, "devDependencies": { "gulp-insert": "^0.3.0" }
نکتهی مهم: دستور npm چه پوشهای را برای نصب انتخاب میکند؟ دستور npm به دنبال پوشهای میگردد که در آن پوشهی node_modules و یا پروندهی package.json وجود داشته باشد. اگر پوشهی جاری چنین شرطی برقرار نبود، پوشهی پدر (بالایی) پوشهی فعلی بررسی میشود. این روش ادامه پیدا میکند تا به پوشهای برسیم که package.json و یا node_modules وجود داشته باشد. در صورت یافتن چنین پوشهای، در صورت لزوم پوشهی node_modules را ساخته و کتابخانههای اعلام شده را در پوشهی node_module نصب میکند.
نصب به صورت همگانی
برخی از دستورات لازم است به صورت همگانی (global) نصب شوند. در این موارد از عبارت -g استفاده میشود. معمولا در این حالت دستورات جدیدی به خط فرمان اضافه میشود به طور مثال با نصب n دستور n از خط فرمان در دسترس خواهد بود که با آن میتوانید نود را به روز نمایید. گاهی برای نصب به صورت همگانی لازم است از دستور sudo استفاده نماییم.
مثال:
$ npm install n -g $ sudo npm install forever -g
و اما ادامه
خوب حالا میتویند راحت بشینید و لم بدید. توی این نوشته قصد داشتیم نحوهی کار کرد node و npm رو آموزش بدیم. امید وارم موفق بوده باشم
و اما خلاصه
اگر گیج شدید عیبی نداره این خلاصه میتونه مفید باشه:
اگر میخواید یک کتابخونه به صورت عموم و همگانی نصب بشه از دستور زیر استفاده کنید(معمولا برای دستوراتی که توی خط فرمان مصرف دارند مثل n، less، gulp و ...):
$ sudo npm install less -g
اگر میخواید یه پروژهی جدید شروع کنید:
$ npm init
و برای نصب کتابخونهها
$ npm install lodash --save
و کتابخونههای زمان توسعه
$ npm install gulp-insert --save-dev
راستی کلی چیز دیگه هم هست که میتونید از خود npm بپرسید
$ npm help Usage: npm <command> where <command> is one of: add-user, adduser, apihelp, author, bin, bugs, c, cache, completion, config, ddp, dedupe, deprecate, docs, edit, explore, faq, find, find-dupes, get, help, help-search, home, i, info, init, install, isntall, issues, la, link, list, ll, ln, login, ls, outdated, owner, pack, prefix, prune, publish, r, rb, rebuild, remove, repo, restart, rm, root, run-script, s, se, search, set, show, shrinkwrap, star, stars, start, stop, submodule, t, tag, test, tst, un, uninstall, unlink, unpublish, unstar, up, update, v, version, view, whoami npm <cmd> -h quick help on <cmd> npm -l display full usage info npm faq commonly asked questions npm help <term> search for help on <term> npm help npm involved overview Specify configs in the ini-formatted file: /home/*****/.npmrc or on the command line via: npm <command> --key value Config info can be viewed via: npm help config npm@1.4.9 /usr/local/lib/node_modules/npm
$ npm install -h npm install npm install <pkg> npm install <pkg>@<tag> npm install <pkg>@<version> npm install <pkg>@<version range> npm install <folder> npm install <tarball file> npm install <tarball url> npm install <git:// url> npm install <github username>/<github project> Can specify one or more: npm install ./foo.tgz bar@stable /some/folder If no argument is supplied and ./npm-shrinkwrap.json is present, installs dependencies specified in the shrinkwrap. Otherwise, installs dependencies from ./package.json.
$ npm help install