[{"data":1,"prerenderedAt":1241},["ShallowReactive",2],{"blog-nodejs-dependency-management":3},{"id":4,"title":5,"body":6,"date":1230,"description":1231,"extension":1232,"meta":1233,"navigation":159,"path":1234,"seo":1235,"stem":1236,"tags":1237,"__hash__":1240},"blog\u002Fblog\u002Fnodejs-dependency-management.md","NodeJS: Dependency Management",{"type":7,"value":8,"toc":1221},"minimark",[9,18,23,49,53,60,110,118,122,129,484,495,606,610,617,621,637,729,737,1040,1049,1063,1067,1087,1091,1104,1118,1131,1145,1150,1167,1178,1194,1214,1217],[10,11,12,13,17],"p",{},"Ketika belajar NodeJS mungkin kita akan menemukan file ",[14,15,16],"code",{},"package.json",". Terdapat informasi mengenai Project Node kita dalam file tersebut. Ayo kita pelajari.",[19,20,22],"h2",{"id":21},"apa-itu-package-json","Apa itu Package JSON",[10,24,25,26,28,29,33,34,37,38,41,42,45,46,48],{},"Setiap Node Project pasti terdapat file yang ditulis dengan JSON(JavaScript Object Notation) untuk menyimpan informasi Node Package. ",[14,27,16],{}," menyimpan ",[30,31,32],"em",{},"basic information"," seperti ",[30,35,36],{},"name",", ",[30,39,40],{},"version",", hingga ",[30,43,44],{},"metadata",". NPM membutuhkan ",[14,47,16],{}," untuk mengelola package.",[19,50,52],{"id":51},"manifest","Manifest",[10,54,55,56,59],{},"Manifest berisi informasi mengenai mengenai yang ditulis kedalam ",[30,57,58],{},"Object",", diantaranya yang sering digunakan:",[61,62,63,67,78,81,89,96,103],"ul",{},[64,65,66],"li",{},"name: Nama package.",[64,68,69,70,77],{},"version: Nomor versi mengarah pada ",[71,72,76],"a",{"href":73,"rel":74},"https:\u002F\u002Fdocs.npmjs.com\u002Fabout-semantic-versioning",[75],"nofollow","semver",".",[64,79,80],{},"description: Informasi singkat mengenai package.",[64,82,83,84,77],{},"lisence: Lisensi package dengan format ",[71,85,88],{"href":86,"rel":87},"https:\u002F\u002Fspdx.org\u002Flicenses\u002F",[75],"SPDX (Software Package Data Exchange)",[64,90,91,92,95],{},"main: ",[30,93,94],{},"entry point"," dari program kita.",[64,97,98,99,102],{},"script: Menjalankan ",[30,100,101],{},"custom script"," kita dengan NPM.",[64,104,105,106,109],{},"dependencies: Berisi semua ",[30,107,108],{},"dependency"," yang dibutuhkan. Akan kita bahas nanti.",[10,111,112,113,77],{},"Untuk selengkapnya bisa kita kunjungi ",[71,114,117],{"href":115,"rel":116},"https:\u002F\u002Fdocs.npmjs.com\u002Fcli\u002Fv9\u002Fconfiguring-npm\u002Fpackage-json",[75],"Docs",[19,119,121],{"id":120},"bagaimana-membuat-packagejson","Bagaimana membuat package.json",[10,123,124,125,128],{},"Kita perlu menginisiasi dengan npm, perintahnya ",[14,126,127],{},"$ npm init",". Jika menjalankan tersebut biasanya kita akan mendapat pertanyaan.",[130,131,136],"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-bash shiki shiki-themes github-light github-dark","$ npm init\n\nThis utility will walk you through creating a package.json file.\nIt only covers the most common items, and tries to guess sensible defaults.\n\npackage name: (test)\nversion: (1.0.0)\ndescription:\nentry point: (index.js)\ntest command:\ngit repository:\nkeywords:\nauthor:\nlicense: (ISC)\nAbout to write to \u002Fhome\u002Flucuria\u002FDocuments\u002Fdev\u002Ftest\u002Fpackage.json:\n\n{\n  \"name\": \"test\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\"\n}\n\n\nIs this OK? (yes)\n","bash","",[14,137,138,154,161,194,236,241,254,263,269,281,291,300,306,312,321,337,342,348,360,371,382,393,404,426,432,442,453,459,464,469],{"__ignoreMap":135},[139,140,143,147,151],"span",{"class":141,"line":142},"line",1,[139,144,146],{"class":145},"sScJk","$",[139,148,150],{"class":149},"sZZnC"," npm",[139,152,153],{"class":149}," init\n",[139,155,157],{"class":141,"line":156},2,[139,158,160],{"emptyLinePlaceholder":159},true,"\n",[139,162,164,167,170,173,176,179,182,185,188,191],{"class":141,"line":163},3,[139,165,166],{"class":145},"This",[139,168,169],{"class":149}," utility",[139,171,172],{"class":149}," will",[139,174,175],{"class":149}," walk",[139,177,178],{"class":149}," you",[139,180,181],{"class":149}," through",[139,183,184],{"class":149}," creating",[139,186,187],{"class":149}," a",[139,189,190],{"class":149}," package.json",[139,192,193],{"class":149}," file.\n",[139,195,197,200,203,206,209,212,215,218,221,224,227,230,233],{"class":141,"line":196},4,[139,198,199],{"class":145},"It",[139,201,202],{"class":149}," only",[139,204,205],{"class":149}," covers",[139,207,208],{"class":149}," the",[139,210,211],{"class":149}," most",[139,213,214],{"class":149}," common",[139,216,217],{"class":149}," items,",[139,219,220],{"class":149}," and",[139,222,223],{"class":149}," tries",[139,225,226],{"class":149}," to",[139,228,229],{"class":149}," guess",[139,231,232],{"class":149}," sensible",[139,234,235],{"class":149}," defaults.\n",[139,237,239],{"class":141,"line":238},5,[139,240,160],{"emptyLinePlaceholder":159},[139,242,244,247,250],{"class":141,"line":243},6,[139,245,246],{"class":145},"package",[139,248,249],{"class":149}," name:",[139,251,253],{"class":252},"sVt8B"," (test)\n",[139,255,257,260],{"class":141,"line":256},7,[139,258,259],{"class":145},"version:",[139,261,262],{"class":252}," (1.0.0)\n",[139,264,266],{"class":141,"line":265},8,[139,267,268],{"class":145},"description:\n",[139,270,272,275,278],{"class":141,"line":271},9,[139,273,274],{"class":145},"entry",[139,276,277],{"class":149}," point:",[139,279,280],{"class":252}," (index.js)\n",[139,282,284,288],{"class":141,"line":283},10,[139,285,287],{"class":286},"sj4cs","test",[139,289,290],{"class":149}," command:\n",[139,292,294,297],{"class":141,"line":293},11,[139,295,296],{"class":145},"git",[139,298,299],{"class":149}," repository:\n",[139,301,303],{"class":141,"line":302},12,[139,304,305],{"class":145},"keywords:\n",[139,307,309],{"class":141,"line":308},13,[139,310,311],{"class":145},"author:\n",[139,313,315,318],{"class":141,"line":314},14,[139,316,317],{"class":145},"license:",[139,319,320],{"class":252}," (ISC)\n",[139,322,324,327,329,332,334],{"class":141,"line":323},15,[139,325,326],{"class":145},"About",[139,328,226],{"class":149},[139,330,331],{"class":149}," write",[139,333,226],{"class":149},[139,335,336],{"class":149}," \u002Fhome\u002Flucuria\u002FDocuments\u002Fdev\u002Ftest\u002Fpackage.json:\n",[139,338,340],{"class":141,"line":339},16,[139,341,160],{"emptyLinePlaceholder":159},[139,343,345],{"class":141,"line":344},17,[139,346,347],{"class":252},"{\n",[139,349,351,354,357],{"class":141,"line":350},18,[139,352,353],{"class":145},"  \"name\"",[139,355,356],{"class":286},":",[139,358,359],{"class":149}," \"test\",\n",[139,361,363,366,368],{"class":141,"line":362},19,[139,364,365],{"class":145},"  \"version\"",[139,367,356],{"class":286},[139,369,370],{"class":149}," \"1.0.0\",\n",[139,372,374,377,379],{"class":141,"line":373},20,[139,375,376],{"class":145},"  \"description\"",[139,378,356],{"class":286},[139,380,381],{"class":149}," \"\",\n",[139,383,385,388,390],{"class":141,"line":384},21,[139,386,387],{"class":145},"  \"main\"",[139,389,356],{"class":286},[139,391,392],{"class":149}," \"index.js\",\n",[139,394,396,399,401],{"class":141,"line":395},22,[139,397,398],{"class":145},"  \"scripts\"",[139,400,356],{"class":286},[139,402,403],{"class":149}," {\n",[139,405,407,410,412,415,418,421,423],{"class":141,"line":406},23,[139,408,409],{"class":145},"    \"test\"",[139,411,356],{"class":286},[139,413,414],{"class":149}," \"echo ",[139,416,417],{"class":286},"\\\"",[139,419,420],{"class":149},"Error: no test specified",[139,422,417],{"class":286},[139,424,425],{"class":149}," && exit 1\"\n",[139,427,429],{"class":141,"line":428},24,[139,430,431],{"class":252},"  },\n",[139,433,435,438,440],{"class":141,"line":434},25,[139,436,437],{"class":145},"  \"author\"",[139,439,356],{"class":286},[139,441,381],{"class":149},[139,443,445,448,450],{"class":141,"line":444},26,[139,446,447],{"class":145},"  \"license\"",[139,449,356],{"class":286},[139,451,452],{"class":149}," \"ISC\"\n",[139,454,456],{"class":141,"line":455},27,[139,457,458],{"class":252},"}\n",[139,460,462],{"class":141,"line":461},28,[139,463,160],{"emptyLinePlaceholder":159},[139,465,467],{"class":141,"line":466},29,[139,468,160],{"emptyLinePlaceholder":159},[139,470,472,475,478,481],{"class":141,"line":471},30,[139,473,474],{"class":145},"Is",[139,476,477],{"class":149}," this",[139,479,480],{"class":149}," OK?",[139,482,483],{"class":252}," (yes)\n",[10,485,486,487,490,491,494],{},"Jika malas mengisi kita bisa menggunakan ",[30,488,489],{},"default value",", hanya tekan enter saja setiap pertanyaan. Namun lebih mudahnya kita bisa menambahkan flag ",[14,492,493],{},"-y"," di perintah npm dan kita akan mendapatkan hasil yang sama.",[130,496,498],{"className":132,"code":497,"language":134,"meta":135,"style":135},"$ npm init -y\nwrote to package.json:\n{\n  \"name\": \"test\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\"\n}\n",[14,499,500,512,522,526,534,542,550,558,566,582,586,594,602],{"__ignoreMap":135},[139,501,502,504,506,509],{"class":141,"line":142},[139,503,146],{"class":145},[139,505,150],{"class":149},[139,507,508],{"class":149}," init",[139,510,511],{"class":286}," -y\n",[139,513,514,517,519],{"class":141,"line":156},[139,515,516],{"class":145},"wrote",[139,518,226],{"class":149},[139,520,521],{"class":149}," package.json:\n",[139,523,524],{"class":141,"line":163},[139,525,347],{"class":252},[139,527,528,530,532],{"class":141,"line":196},[139,529,353],{"class":145},[139,531,356],{"class":286},[139,533,359],{"class":149},[139,535,536,538,540],{"class":141,"line":238},[139,537,365],{"class":145},[139,539,356],{"class":286},[139,541,370],{"class":149},[139,543,544,546,548],{"class":141,"line":243},[139,545,376],{"class":145},[139,547,356],{"class":286},[139,549,381],{"class":149},[139,551,552,554,556],{"class":141,"line":256},[139,553,387],{"class":145},[139,555,356],{"class":286},[139,557,392],{"class":149},[139,559,560,562,564],{"class":141,"line":265},[139,561,398],{"class":145},[139,563,356],{"class":286},[139,565,403],{"class":149},[139,567,568,570,572,574,576,578,580],{"class":141,"line":271},[139,569,409],{"class":145},[139,571,356],{"class":286},[139,573,414],{"class":149},[139,575,417],{"class":286},[139,577,420],{"class":149},[139,579,417],{"class":286},[139,581,425],{"class":149},[139,583,584],{"class":141,"line":283},[139,585,431],{"class":252},[139,587,588,590,592],{"class":141,"line":293},[139,589,437],{"class":145},[139,591,356],{"class":286},[139,593,381],{"class":149},[139,595,596,598,600],{"class":141,"line":302},[139,597,447],{"class":145},[139,599,356],{"class":286},[139,601,452],{"class":149},[139,603,604],{"class":141,"line":308},[139,605,458],{"class":252},[19,607,609],{"id":608},"mengelola-dependency","Mengelola Dependency",[10,611,612,613,616],{},"Setiap kali membuat program biasanya kita membutuhkan ",[30,614,615],{},"third-party library",". Didalam Node JS, tersimpan pada NPM Registry.",[19,618,620],{"id":619},"menginstall-package","Menginstall Package",[10,622,623,624,626,627,629,630,633,634,77],{},"Untuk menginstall ",[30,625,246],{}," atau ",[30,628,108],{}," cukup mudah, hanya dengan mengetikkan ",[14,631,632],{},"npm install",". Selesai menjalankannya akan muncul folder ",[30,635,636],{},"node_module",[61,638,639],{},[64,640,641,642,659,662,663,666,667,669,670,356,672,703,705,706,709,710,712,713],{},"Install package:",[130,643,645],{"className":132,"code":644,"language":134,"meta":135,"style":135},"$ npm install react\n",[14,646,647],{"__ignoreMap":135},[139,648,649,651,653,656],{"class":141,"line":142},[139,650,146],{"class":145},[139,652,150],{"class":149},[139,654,655],{"class":149}," install",[139,657,658],{"class":149}," react\n",[660,661],"br",{},"Secara default npm akan menginstall ",[30,664,665],{},"stable release"," yang terbaru di Registry. Sekarang jika dilihat file ",[30,668,16],{},", akan muncul ",[30,671,108],{},[130,673,677],{"className":674,"code":675,"language":676,"meta":135,"style":135},"language-json shiki shiki-themes github-light github-dark","\"dependencies\": {\n  \"react\": \"^18.2.0\"\n},\n","json",[14,678,679,687,698],{"__ignoreMap":135},[139,680,681,684],{"class":141,"line":142},[139,682,683],{"class":149},"\"dependencies\"",[139,685,686],{"class":252},": {\n",[139,688,689,692,695],{"class":141,"line":156},[139,690,691],{"class":286},"  \"react\"",[139,693,694],{"class":252},": ",[139,696,697],{"class":149},"\"^18.2.0\"\n",[139,699,700],{"class":141,"line":163},[139,701,702],{"class":252},"},\n",[660,704],{},"Jika ingin meng-",[30,707,708],{},"install"," banyak package sekaligus hanya perlu menambahkan ",[30,711,246],{}," lagi di belakangnya dan jika ingin spesifik versi yang kita mau langsung saja ditulis versinya.",[130,714,716],{"className":132,"code":715,"language":134,"meta":135,"style":135},"$ npm install react@18.0.1\n",[14,717,718],{"__ignoreMap":135},[139,719,720,722,724,726],{"class":141,"line":142},[139,721,146],{"class":145},[139,723,150],{"class":149},[139,725,655],{"class":149},[139,727,728],{"class":149}," react@18.0.1\n",[10,730,731,732,734,735,77],{},"Ada variasi lain yang bisa digunakan, yaitu dengan menuliskan langsung ",[30,733,108],{}," yang diperlukan di ",[30,736,16],{},[130,738,740],{"className":674,"code":739,"language":676,"meta":135,"style":135},"{\n  \"name\": \"personal-site\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@next\u002Ffont\": \"^13.2.4\",\n    \"@tailwindcss\u002Ftypography\": \"^0.5.8\",\n    \"@types\u002Fnode\": \"18.11.17\",\n    \"@types\u002Freact\": \"18.0.26\",\n    \"@types\u002Freact-dom\": \"18.0.9\",\n    \"eslint-config-next\": \"^13.2.4\",\n    \"gray-matter\": \"^4.0.3\",\n    \"next\": \"^13.2.4\",\n    \"next-mdx-remote\": \"^4.2.0\",\n    \"next-themes\": \"^0.2.1\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"rehype-prism-plus\": \"^1.5.0\",\n    \"remark-gfm\": \"^3.0.1\",\n    \"remark-mdx-code-meta\": \"^2.0.0\",\n    \"typescript\": \"4.9.4\"\n  }\n}\n",[14,741,742,746,758,769,781,787,799,811,823,833,837,844,856,868,880,892,904,915,927,938,950,962,974,985,997,1009,1021,1031,1036],{"__ignoreMap":135},[139,743,744],{"class":141,"line":142},[139,745,347],{"class":252},[139,747,748,750,752,755],{"class":141,"line":156},[139,749,353],{"class":286},[139,751,694],{"class":252},[139,753,754],{"class":149},"\"personal-site\"",[139,756,757],{"class":252},",\n",[139,759,760,762,764,767],{"class":141,"line":163},[139,761,365],{"class":286},[139,763,694],{"class":252},[139,765,766],{"class":149},"\"0.1.0\"",[139,768,757],{"class":252},[139,770,771,774,776,779],{"class":141,"line":196},[139,772,773],{"class":286},"  \"private\"",[139,775,694],{"class":252},[139,777,778],{"class":286},"true",[139,780,757],{"class":252},[139,782,783,785],{"class":141,"line":238},[139,784,398],{"class":286},[139,786,686],{"class":252},[139,788,789,792,794,797],{"class":141,"line":243},[139,790,791],{"class":286},"    \"dev\"",[139,793,694],{"class":252},[139,795,796],{"class":149},"\"next dev\"",[139,798,757],{"class":252},[139,800,801,804,806,809],{"class":141,"line":256},[139,802,803],{"class":286},"    \"build\"",[139,805,694],{"class":252},[139,807,808],{"class":149},"\"next build\"",[139,810,757],{"class":252},[139,812,813,816,818,821],{"class":141,"line":265},[139,814,815],{"class":286},"    \"start\"",[139,817,694],{"class":252},[139,819,820],{"class":149},"\"next start\"",[139,822,757],{"class":252},[139,824,825,828,830],{"class":141,"line":271},[139,826,827],{"class":286},"    \"lint\"",[139,829,694],{"class":252},[139,831,832],{"class":149},"\"next lint\"\n",[139,834,835],{"class":141,"line":283},[139,836,431],{"class":252},[139,838,839,842],{"class":141,"line":293},[139,840,841],{"class":286},"  \"dependencies\"",[139,843,686],{"class":252},[139,845,846,849,851,854],{"class":141,"line":302},[139,847,848],{"class":286},"    \"@next\u002Ffont\"",[139,850,694],{"class":252},[139,852,853],{"class":149},"\"^13.2.4\"",[139,855,757],{"class":252},[139,857,858,861,863,866],{"class":141,"line":308},[139,859,860],{"class":286},"    \"@tailwindcss\u002Ftypography\"",[139,862,694],{"class":252},[139,864,865],{"class":149},"\"^0.5.8\"",[139,867,757],{"class":252},[139,869,870,873,875,878],{"class":141,"line":314},[139,871,872],{"class":286},"    \"@types\u002Fnode\"",[139,874,694],{"class":252},[139,876,877],{"class":149},"\"18.11.17\"",[139,879,757],{"class":252},[139,881,882,885,887,890],{"class":141,"line":323},[139,883,884],{"class":286},"    \"@types\u002Freact\"",[139,886,694],{"class":252},[139,888,889],{"class":149},"\"18.0.26\"",[139,891,757],{"class":252},[139,893,894,897,899,902],{"class":141,"line":339},[139,895,896],{"class":286},"    \"@types\u002Freact-dom\"",[139,898,694],{"class":252},[139,900,901],{"class":149},"\"18.0.9\"",[139,903,757],{"class":252},[139,905,906,909,911,913],{"class":141,"line":344},[139,907,908],{"class":286},"    \"eslint-config-next\"",[139,910,694],{"class":252},[139,912,853],{"class":149},[139,914,757],{"class":252},[139,916,917,920,922,925],{"class":141,"line":350},[139,918,919],{"class":286},"    \"gray-matter\"",[139,921,694],{"class":252},[139,923,924],{"class":149},"\"^4.0.3\"",[139,926,757],{"class":252},[139,928,929,932,934,936],{"class":141,"line":362},[139,930,931],{"class":286},"    \"next\"",[139,933,694],{"class":252},[139,935,853],{"class":149},[139,937,757],{"class":252},[139,939,940,943,945,948],{"class":141,"line":373},[139,941,942],{"class":286},"    \"next-mdx-remote\"",[139,944,694],{"class":252},[139,946,947],{"class":149},"\"^4.2.0\"",[139,949,757],{"class":252},[139,951,952,955,957,960],{"class":141,"line":384},[139,953,954],{"class":286},"    \"next-themes\"",[139,956,694],{"class":252},[139,958,959],{"class":149},"\"^0.2.1\"",[139,961,757],{"class":252},[139,963,964,967,969,972],{"class":141,"line":395},[139,965,966],{"class":286},"    \"react\"",[139,968,694],{"class":252},[139,970,971],{"class":149},"\"^18.2.0\"",[139,973,757],{"class":252},[139,975,976,979,981,983],{"class":141,"line":406},[139,977,978],{"class":286},"    \"react-dom\"",[139,980,694],{"class":252},[139,982,971],{"class":149},[139,984,757],{"class":252},[139,986,987,990,992,995],{"class":141,"line":428},[139,988,989],{"class":286},"    \"rehype-prism-plus\"",[139,991,694],{"class":252},[139,993,994],{"class":149},"\"^1.5.0\"",[139,996,757],{"class":252},[139,998,999,1002,1004,1007],{"class":141,"line":434},[139,1000,1001],{"class":286},"    \"remark-gfm\"",[139,1003,694],{"class":252},[139,1005,1006],{"class":149},"\"^3.0.1\"",[139,1008,757],{"class":252},[139,1010,1011,1014,1016,1019],{"class":141,"line":444},[139,1012,1013],{"class":286},"    \"remark-mdx-code-meta\"",[139,1015,694],{"class":252},[139,1017,1018],{"class":149},"\"^2.0.0\"",[139,1020,757],{"class":252},[139,1022,1023,1026,1028],{"class":141,"line":455},[139,1024,1025],{"class":286},"    \"typescript\"",[139,1027,694],{"class":252},[139,1029,1030],{"class":149},"\"4.9.4\"\n",[139,1032,1033],{"class":141,"line":461},[139,1034,1035],{"class":252},"  }\n",[139,1037,1038],{"class":141,"line":466},[139,1039,458],{"class":252},[10,1041,1042,1043,1045,1046,77],{},"kemudian tinggal menjalankan perintah install, lalu npm akan meng-",[30,1044,708],{}," semua yang tertulis di ",[30,1047,1048],{},"dependencies",[130,1050,1052],{"className":132,"code":1051,"language":134,"meta":135,"style":135},"$ npm install\n",[14,1053,1054],{"__ignoreMap":135},[139,1055,1056,1058,1060],{"class":141,"line":142},[139,1057,146],{"class":145},[139,1059,150],{"class":149},[139,1061,1062],{"class":149}," install\n",[19,1064,1066],{"id":1065},"mengelola-versi","Mengelola Versi",[10,1068,1069,1070,1075,1076,1078,1079,1081,1082,77],{},"Versi didalam NodeJS terintegrasi dengan ",[71,1071,1074],{"href":1072,"rel":1073},"https:\u002F\u002Fsemver.org\u002F",[75],"Semver",". Kita bisa dengan spesifik menuliskan apa yang kita mau kedalam ",[30,1077,1048],{}," ",[30,1080,16],{},". Jika bingung kita bisa gunakan ",[71,1083,1086],{"href":1084,"rel":1085},"https:\u002F\u002Fsemver.npmjs.com\u002F",[75],"kalkulator Semver NPM",[19,1088,1090],{"id":1089},"melihat-versi-dependency","Melihat Versi Dependency",[10,1092,1093,1094,1097,1098,1101,1102,77],{},"Mungkin kita bekerja pada ",[30,1095,1096],{},"legacy project"," dan banyak sekali dependency yang harus di-",[30,1099,1100],{},"update",". Kita bisa dengan sederhana mengetikkan sebuah perintah yang secara otomatis menampilkan versi mengenai ",[30,1103,108],{},[130,1105,1107],{"className":132,"code":1106,"language":134,"meta":135,"style":135},"$ npm outdated\n",[14,1108,1109],{"__ignoreMap":135},[139,1110,1111,1113,1115],{"class":141,"line":142},[139,1112,146],{"class":145},[139,1114,150],{"class":149},[139,1116,1117],{"class":149}," outdated\n",[10,1119,1120,1121,1123,1124,1126,1127,1130],{},"Untuk meng-",[30,1122,1100],{}," semua ",[30,1125,108],{}," sesuai ",[30,1128,1129],{},"Wanted version"," bisa dengan perintah:",[130,1132,1134],{"className":132,"code":1133,"language":134,"meta":135,"style":135},"$ npm update\n",[14,1135,1136],{"__ignoreMap":135},[139,1137,1138,1140,1142],{"class":141,"line":142},[139,1139,146],{"class":145},[139,1141,150],{"class":149},[139,1143,1144],{"class":149}," update\n",[10,1146,1147,1148,356],{},"Atau ingin hanya beberapa ",[30,1149,108],{},[130,1151,1153],{"className":132,"code":1152,"language":134,"meta":135,"style":135},"$ npm update next\n",[14,1154,1155],{"__ignoreMap":135},[139,1156,1157,1159,1161,1164],{"class":141,"line":142},[139,1158,146],{"class":145},[139,1160,150],{"class":149},[139,1162,1163],{"class":149}," update",[139,1165,1166],{"class":149}," next\n",[10,1168,1169,1170,1172,1173,1177],{},"Sudah biasa bagi kita untuk berpindah-pindah versi dengan alasan tertentu. Melakukannya di NPM cukup mudah yaitu meng-",[30,1171,708],{}," dengan versi yang diinginkan. Seperti contoh kita ingin ",[1174,1175,1176],"strong",{},"downgrade"," package:",[130,1179,1181],{"className":132,"code":1180,"language":134,"meta":135,"style":135},"$ npm install next@^12.0.0\n",[14,1182,1183],{"__ignoreMap":135},[139,1184,1185,1187,1189,1191],{"class":141,"line":142},[139,1186,146],{"class":145},[139,1188,150],{"class":149},[139,1190,655],{"class":149},[139,1192,1193],{"class":149}," next@^12.0.0\n",[10,1195,1196,1197,1199,1200,1203,1204,1078,1207,1209,1210,1213],{},"Jika sebelumnya di ",[30,1198,16],{}," kita terdapat ",[30,1201,1202],{},"next"," dengan ",[30,1205,1206],{},"latest",[30,1208,40],{}," akan otomatis ",[30,1211,1212],{},"replace"," dengan versi yang kita inginkan",[10,1215,1216],{},"Terimakasih sudah membaca!\n~ Ann",[1218,1219,1220],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":135,"searchDepth":156,"depth":156,"links":1222},[1223,1224,1225,1226,1227,1228,1229],{"id":21,"depth":156,"text":22},{"id":51,"depth":156,"text":52},{"id":120,"depth":156,"text":121},{"id":608,"depth":156,"text":609},{"id":619,"depth":156,"text":620},{"id":1065,"depth":156,"text":1066},{"id":1089,"depth":156,"text":1090},"2023-05-14","Belajar Dependency Management di NodeJS dengan NPM","md",{},"\u002Fblog\u002Fnodejs-dependency-management",{"title":5,"description":1231},"blog\u002Fnodejs-dependency-management",[1238,1239],"Node","JavaScript","TwhXrzVYVZuscSDOgQyW0im0JzpigJnjr0pbzsEZdOw",1781958637509]