What is “npm” and how to use it?
NPM (Node Package Manager)
NPM මගින් අපිට අවශ්ය node pacages download කර ගන්න පුළුවන්. මේ සදහා ඔබගේ පරිඝනකය තුල Node.js වගේ JavaScript executer එකක් install කරලා තියෙන්න ඕන. ඔබගේ පරිඝනකයේ කලින් Node.js install කරලා තියෙනවාද හෝ අලුතින් install කල එක නිවැරදිව වැඩ කරනවාද කියාලා බලන්න අපිට පුළුවන් “node -v” ලෙස command prompt එකේ හෝ terminal එකක run කරලා. එවිට දැනට install වෙලා තියෙන Node version එක (v16.17.0) පෙන්වනවා. දැන් අපිට ලැබුන NPM version එක බලා ගන්න පුළුවන් “npm -v” කියන command එකෙන්.
Initializing npm in a project with “npm init”
දැන් අපි වැඩ කරන project එකට npm එකතු කර ගන්න අපිට පුළුවන් අදාල folder එක තුලදී “npm init” කියන command එක භාවිතා කරලා. එවිට අපගෙන් project එකට සම්බන්ධ කරුණු කිහිපයක් ඇතුලත් කරන්න ඉල්ලා සිටිනවා.
1. package name: එක හැටියට default ලෙස අපිට අපේ project foder name එක “test-codes” වගේ නියමිත ආකාරයට format වෙලා ලැබෙනවා (simple letters, no-spaces).
2. version: එක හැටියට default ලෙස අපිට (1.0.0) ලැබෙනවා.
3. description: අපිට අවශ්ය විස්තරයක් add කරන්න පුළුවන්.
4. entry point: එක හැටියට default ලෙස අපිට (index.js) ලැබෙනවා.
5. test command: project එක testing සදහා භාවිතා වන file හදුන්වා දෙන්න භාවිතා කරනවා යයි හැගෙනවා. තව ඒ ගැන අධ්යනයක් කල යුතුව තියෙනවා.
6. git repository: source code එක තියෙන git repository එක හදුන්වා දෙන්න පුළුවන්.
7. keywords: මගින් project එකට අදාල tags එකතු කර ගන්න පුළුවන්.
8. author: මගින් project author ව හදුන්වා දෙන්න පුළුවන්.
9. license: එක හැටියට default ලෙස අපිට (ISC) ලැබෙනවා. මේ ගැන වැඩි විස්තර හොයන්න ඕන.
මේ විස්තර ටික අපිට අවශ්ය පරිදි වෙනස් කරලා දුන්නම එම විස්තර සහිත pacage.json නමින් file එකක් project folder එක ඇතුලට හදලා දෙනවා.
//package.json file initial content
{
"name": "my-nmp-rest",
"version": "1.0.1",
"description": "test For NPM",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"npm",
"study"
],
"author": "lakshman",
"license": "ISC"
}
අපිට කලින් add කල දෙයක් වෙනස් කරන්න ඕන නම් මේ file එකේ edit කර ගන්න පුළුවන්. “npm int” command එක මගින් සිදු වන්නේ අපි ඉන්න folder එක තුලට ඉහත file එක create වීම විතරමයි. අපිට අවශ්යනම් “npm init — (double dash)yes” කියන command එක භාවිතා කරලා අර කලින් අහපු ප්රශ්න වලට පිළිතුරු නොදී default values සමග කෙලින්ම pacage.json file එක create කර ගන්න පුළුවන්.
Install Modules with “npm install"
අපිට project එක සදහා අවශ්ය modules install කර ගන්න “npm install <module name>” command එකෙන් පුළුවන්. ඒ වගේම, modules කිහිපයක් එකවර install කරගන්න module_name අතර space එකක් සමග ලබා දීම මගින් පුළුවන්. මෙහිදී, මෙම module එකට අදාල files ටිකට node_modules නමින් අලුත් folder එකක් සහ pacage-lock.json නමින් අලුත් file එකකුත් create වෙනවා. ඒ වගේම package.json file එකෙත් මෙම modules වල විස්තර update වෙනවා. එවිට package.json file එක මගින් වෙනත් තැනක හෝ වෙන කෙනෙකුට මෙම node modules ටික ඒ versions වලින්ම project එකට add කර ගන්න පහසුකම සැලසෙනවා. ඒ සදහා “npm install” command එක භාවිතා කරන්න පුළුවන්. “npm install” නැතිනම් “npm i” commnad එක run කලාම මුලින්ම package-lock.json file එකක් තියෙනවා නම් එකෙන් නැත්නම් package.json file එකෙන් project එකට භාවිතා කරලා තියෙන modules ටික add කර ගන්නවා.
මේ package-lock.json file එක මගින් අප project එකේ භාවිතා කරන සියලුම node modules වල current versions ටික හරියටම සදහන් කර ගෙන ඉන්නවා. අපි pacage.json file එකේ හෝ node modules වල වෙනසක් සිදු කලොත් ඒ අනුව මෙම package-lock.json එකත් වෙනස් වෙනවා. මෙහි වැදගත් කම තමයි එකම project එක කිහිප දෙනෙක් එකව වැඩ කරන විට සියලුම දෙනාට node modules වල සමාන versions ලබා ගන්න පුළුවන් වීම.
අපි බලමු ReactJs වල දී භාවිතා වන babel module එකක් මේ විදිහට අපේ project එකට install කරලා. ඒ සදහා “npm i @babel/core” command එක භාවිතා කරමු. එවිට project එකේ කලින් තිබුන package.json file එක වෙනස් වෙනවා, අලුතින් dependencies නමින් field එකක් සහ එයට object එකක් create වෙනවා “@babel/core”: “^7.20.12” විදිහට. මෙන්න මේ “^7.20.12” කියන value එකෙන් තමයි babel/core එකේ version එක කිය වෙන්නේ.
{
"name": "test-codes",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@babel/core": "^7.20.12"
}
}
ඉහත කතා කල version value එක තුල විශේෂ ලකුණක් ( “^”) ඔබ දකින්න ඇති. මෙවැනි තවත් විශේෂ ලකුණු කිහිපයක් version value එක සමග භාවිතා කරනවා විවිධ අදහස් දෙන්න. දැනට භාවිතා කරලා තියෙන version එකෙන් (7.20.12) deviate විය හැකි ආකාරය npm ට දැන්වීම සදහා මෙම විශේෂ ලකුණු යොදා ගන්නවා.
“^7.20.12” — (upgrade to minor and patch versions, but not major versions) ඒ කියන්නේ “7.20.15”, “7.24.12”, ”7.30.0" වගේ versions වලට ගියාට “8.0.0” හෝ ඊට ඉහල version වලට යන්න එපා කියන එක.
“~7.20.12” — (upgrade to patch versions, but not minor and major versions)
ඒ කියන්නේ “7.20.15”, “7.20.28”, ”7.20.50" වගේ versions වලට ගියාට “7.21.0” හෝ ඊට ඉහල minor version වලට වත් යන්න එපා කියන එක. හැබැයි මෙහෙම version update වෙන්නේ package-lock.json file එකක් project එක තුල නැතිනම් පමණයි.
තවත් මෙවැනි ලකුණු පිලිබදව තොරතුරු npmjs.com තුලින් බලා ගන්න පුළුවන්.
දැන් කොහොමද මේ version වෙනස් වෙලා install වෙන්නේ? අපි හිතමු කෙනෙකුට node_modules folder එක සහ package-lock.json file එක නැතිව package.json file එක විතරක් සමග project එක ලැබුනා කියලා. ඊට පස්සේ එයා “npm install” command එක run කලොත් සිද්ධ වෙන්නේ මොකද්ද? package.json file එකේ තියෙන dependency modules, ඒවායේ versions වල විශේෂ ලකුණු මගින් නිදහස දීලා තියෙන පරිදි ඉහලම version එකෙන් install වෙනවා.
Project dependencies වර්ග කිහිපයක් හදුනා ගන්නත් පුළුවන්. dependencies, devDependencies, optinalDependencies, and peerDepenedencies කියලා. මේ පිලිබදව තව අධ්යනය කල යුතුව තියෙනවා.
Uninstall Modules with “npm uninstall"
අපිට පුළුවන් innstall කරපු අනවශ්ය node modules uninstall කර ගන්නත්. ඒ සදහා “npm uninstall <module_name> command එක භාවිතා කරන්න පුළුවන්. එවිට node_modules folder එකේ තිබෙන එම module එකට පමණක් අදාල files ටික remove වන අතර package.json සහ package-lock.josn files ද එම module එක ඉවත් කරලා update වෙනවා.
ඒත් , අපිට අවශ්ය නම් package.json සහ package-lock.json files වෙනස් නොවී node_modules folder එක තුල තිබෙන files ඉවත් කර ගැනීමටත් පුළුවන්. ඒ සදහා npm uninstall <module_name> —no-save (double dash) comand එක භාවිතා කරන්න පුළුවන්. Unistalling පිලිබදව npmjs.com තුලින් වැඩිදුර විස්තර සොයා ගන්න පුළුවන්.
ඉහත කරුණු අතර, ඔබට එකග විය නොහැකි යමක් හෝ අලුතින් එක්විය යුතු දෙයක් ඇත්නම් කරුණාකර Response (comment) එකක් මගින් දැනුවත් කරන්න. වැරදි/අඩුපාඩු සහිත තොරතුරක් සමාජ ගතවීම වැලක්වීමට ඔබටද එමගින් දායක විය හැකියි.
මිඉලග article එකෙන් අපි බලමු npx ගැන විස්තර.