залежнасці ад devDependpendations

Вы калі-небудзь пыталіся ў сябе, у чым розніца паміж гэтымі двума тыпамі залежнасцей ўнутры вашага package.json? У гэтым артыкуле я паспрабую адказаць на гэтае пытанне простымі словамі.

Што такое залежнасці і для чаго яны выкарыстоўваюцца?

Калі вы не распрацоўшчык з 2007 года, і вы ўсталёўваеце рамкі і libs з дапамогай менеджэраў пакетаў, вы павінны выкарыстоўваць залежнасці, нават калі вы пра іх не ведалі. Уявіце, што вы стварылі казачны сайт з дапамогай Vue і ўсталявалі яго з npm. І вы, магчыма, захочаце, каб іншыя людзі ўбачылі, які вы дзівосны распрацоўшчык, і вы падштурхнулі свой праект да рэканструкцыі github, і, вядома, вы дадалі свае node_modules ў файл .gitignore, таму што вы разумны распрацоўшчык. Тады іншыя людзі капіруюць ваш праект на сваіх машынах і спрабуюць запусціць яго ў localhost, але oopppss, нічога не працуе ... Усё гэта адбываецца з-за выкарыстанага Vue, які быў усталяваны ўнутры нашых node_modules, на якія вы не націскалі. Адзінае рашэнне гэтай праблемы - проста запусціць сцэнар ўстаноўкі npm у папцы праекта

І гэта, калі package.json ўваходзіць у гульню. Гэта каманда ўвойдзе ў ваш package.json і ўсталюе ўсе рамкі і ўклады, згаданыя ў вашых залежнасцях. Напрыклад, у маім выпадку будуць усталяваны Vue і Vue-матэрыялы + неабходныя пакеты для стабільнай працы npm

Як залежнасці з'яўляюцца ў вашым package.json?

Пры ўсталёўцы некаторых ліб з дапамогай npm, уся неабходная інфармацыя аўтаматычна дадаецца ў залежнасці. Напрыклад, давайце ўсталюем Vuex з дапамогай npm install vuex --save

Vuex і ўсе дадатковыя неабходныя пакеты былі паспяхова дададзены ў вашу залежнасць.

залежнасці ад devDependpendations

А цяпер прыйшоў час адказаць на галоўнае пытанне гэтага артыкула, у чым розніца паміж гэтымі двума тыпамі залежнасцей?

devDependences павінны ўтрымліваць пакеты, якія выкарыстоўваюцца падчас распрацоўкі альбо выкарыстоўваюцца для стварэння вашага пакета, напрыклад, mocha, jscs, grunt-contrib-watch, gulp-nede і г.д. Гэтыя пакеты не патрэбныя толькі падчас распрацоўкі вашага праекта, таксама ESlint выкарыстоўваецца для праверкі ўсяго падчас стварэння вашага пакета. Так што ўсталюйце ўсе гэтыя пакеты пры дапамозе сцяга -dev, пра гэта скажуць у npm, heeey, мне патрэбны гэты пакет для распрацоўкі, так што гэта аўтаматычна дадасць пакет у devDependpendі, а не ў звычайныя залежнасці.

Дарэчы, npm install па змаўчанні ўсталёўвае пакеты як з залежнасцей, так і з devDependpend. Я не бачыў выкарыстання гэтага сцяга на працягу многіх гадоў, але я проста дам вам гэта ведаць, для маленькіх праектаў гэта можа працаваць npm install --production, --production flag кажа пра npm, хэй, я хачу, каб вы ўсталявалі пакеты толькі ад звычайных залежнасцей.

Залежнасці павінны ўтрымліваць ўкладкі і рамкі, на якіх пабудавана ваша прыкладанне, такія як Vue, React, Angular, Express, JQuery і г.д. Вы пагадзіцеся са мной, калі я скажу, што ваш праект не будзе працаваць без гэтых пакетаў (калі вы іх выкарыстоўваеце , канешне).

Выснова

Падводзячы вынікі, выкарыстоўвайце -dev сцяг, калі вы ўсталёўваеце пакеты, якія вы будзеце выкарыстоўваць пры распрацоўцы, і не трэба, калі пакет, які вы ўсталёўваеце, прызначаны для вытворчасці.

Дзякуй, што прачыталі мой артыкул, пляскайце ў гэтую гісторыю, каб дапамагчы мне вырасціць свой сярэдні профіль, прачытайце іншыя мае артыкулы пра праграмаванне: