π¦ Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ npm? ΠΠ°ΠΉΠ΄ ΠΏΠΎ Node Package Manager Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ JavaScript-ΠΏΠ°ΠΊΠ΅ΡΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ npm β ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Node.js.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Node.js ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² 2009 Π³., ΠΈ Ρ ΡΠ΅Ρ ΠΏΠΎΡ Π½Π° Π½Π΅ΠΉ Π±ΡΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ ΡΠΎΡΠ½ΠΈ ΡΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½ ΡΡΠΏΠ΅Ρ Π° ΡΡΠ°Π» npm β ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ JS-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΡΡΡΡΠΎ Π΄Π΅Π»ΠΈΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ.
ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ Π² npm ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ 1.3 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΎΠ±ΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠΉ 16 ΠΌΠ»ΡΠ΄.
1. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ npm?
npm (Node Package Manager) β Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π΄Π»Ρ JavaScript, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π½Π° Node.js. ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ npm ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ:
- CLI (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ) β ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²,
- ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ JS ΠΏΠ°ΠΊΠ΅ΡΡ.
Π‘ΡΡΡΠΊΡΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ npmjs.com ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠ΅Π½ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΊΠ°Π·ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ²Π°ΡΡ (npm-ΠΏΠ°ΠΊΠ΅ΡΡ) ΠΎΡ ΠΏΡΠΎΠ΄Π°Π²ΡΠΎΠ² (Π°Π²ΡΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²) ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅Ρ ΡΡΠΈ ΡΠΎΠ²Π°ΡΡ ΡΡΠ΅Π΄ΠΈ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΉ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²).
Π ΡΠ΅Π½ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΊΠ°Π·ΠΎΠ² (npmjs.com) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°ΡΠΌΠΈΡ Π²ΠΎΠΌΠ±Π°ΡΠΎΠ² (npm CLI
).
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π ΠΈΡ. 1).
ΠΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π ΠΈΡ. 2.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Π²ΠΎΠΌΠ±Π°ΡΠΎΠ².
1.1. Π€Π°ΠΉΠ» package.json
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² JavaScript β Π±ΡΠ΄Ρ ΡΠΎ Node.js ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ npm-ΠΏΠ°ΠΊΠ΅Ρ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠΌ package.json
.
package.json
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΠΊΠ°ΠΊ ΡΡΠΈΠΊΠ΅ΡΡ (ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½ΡΠΆΠ½ΡΡ
Π²Π΅ΡΡΠΈΠΉ) Π½Π° npm-ΠΊΠΎΡΠΎΠ±ΠΊΠ΅ (ΠΏΡΠΎΠ΅ΠΊΡ). Π€Π°ΠΉΠ» Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ npm init
ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ JavaScript/Node.js ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ:
name
: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ JS Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ/ΠΏΡΠΎΠ΅ΠΊΡΠ°.version
: Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.description
: ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.license
: Π»ΠΈΡΠ΅Π½Π·ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
1.2. Π‘ΠΊΡΠΈΠΏΡΡ npm
Π package.json
Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎΠ»Π΅ scripts
Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
eslint
, prettier
, ncc
, jest
ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Π½ΡΡΡΠΈ node_modules/.bin/
.
1.3. dependencies ΠΈ devDependencies
dependencies
ΠΈ devdependencies
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ»ΠΎΠ²Π°ΡΠΈ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ npm-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (ΠΊΠ»ΡΡ) ΠΈ ΠΈΡ
ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅). ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π° TypeScript Action:
ΠΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ npm install
Ρ ΡΠ»Π°Π³Π°ΠΌΠΈ --save
ΠΈ --save-dev
. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
Π Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ:
^
: ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠΈΠ½ΠΎΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ·. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,^1.0.4
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²Π΅ΡΡΠΈΡ1.3.0
, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠΈΠ½ΠΎΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· Π² ΡΠ΅ΡΠΈΠΈ1
ΠΌΠ°ΠΆΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°.~
: ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ°ΡΡ-ΡΠ΅Π»ΠΈΠ·.~1.0.4
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ1.0.7
, Π΅ΡΠ»ΠΈ ΡΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΌΠΈΠ½ΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π² ΡΠ΅ΡΠΈΠΈ ΠΌΠΈΠ½ΠΎΡΠ½ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²1.0
.
ΠΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π² ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ package-lock.json
.
1.4. Π€Π°ΠΉΠ» package-lock.json
Π€Π°ΠΉΠ» package-lock.json
ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² JavaScript-ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΡΠ»ΠΈ package.json
Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°), ΡΠΎ package-lock.json
Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ β Π²ΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
package-lock.json
Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ npm install
ΠΈ ΡΠΈΡΠ°Π΅ΡΡΡ npm CLI, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ΡΠ΅Π· npm ci
.
2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΡΠ΅ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ (16 ΠΌΠ»ΡΠ΄ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠΉ ΠΏΡΠΎΡΠΈΠ² 13 ΠΌΠ»Π½ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ), Ρ ΠΎΡΠΎΡΠΎ Π±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ.
2.1. npm install
npm install
β ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠ°Ρ ΠΏΠ°ΠΊΠ΅ΡΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ npm install <package-name>
ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ^
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. npm install
ΡΠΊΠ°ΡΠ°Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ Π² ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° node_modules
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Π² ΡΠ°ΠΉΠ»Π΅ package.json
, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (ΠΈ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² package-lock.json
). ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π°Π³ -g
.
npm ΡΠ΄Π΅Π»Π°Π» ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² JavaScript Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠΎΠΉ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΠ² ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΌΠ΅ΠΌΡ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ:
ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»Π°Π³Π° --production
ΡΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· dependencies
, Π½Π΅ ΡΠ°Π·Π΄ΡΠ²Π°Ρ node_modules
.
2.2. npm ci
ΠΡΠ»ΠΈ npm install --production
ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ? ΠΠ°, ΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ npm ci
.
ΠΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, Π΅ΡΠ»ΠΈ package-lock.json
Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ npm install
. npm ci
ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Lock-ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π° ΡΠ°Π·Π½ΡΡ
ΠΌΠ°ΡΠΈΠ½Π°Ρ
Π½Π°Π±ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ.
2.3. npm audit
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ npm.js ΠΏΡΠΈΡΠ»Π° ΠΊ ΠΈΠ΄Π΅Π΅ Π°ΡΠ΄ΠΈΡΠ° ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΎΠ·Π΄Π°Π² ΠΌΠΎΠ΄ΡΠ»Ρ npm audit
. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ
Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ
ΠΈ ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΉ Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ.
ΠΡΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠ°, npm audit fix
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Π·Π°ΡΡΠΎΠ½ΡΡΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
3. Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΊ ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
3.1. npm publish
ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π² npmjs.com ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ β Π½ΡΠΆΠ½ΠΎ Π½Π°Π±ΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ npm publish
. ΠΠ°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°ΡΡ Π°Π²ΡΠΎΡΡ β Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΎΡ Π½Π°Π±ΠΎΡ ΡΠΌΠΏΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ» semver.org, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΡ
, ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ:
- ΠΠ°ΠΆΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ: ΠΊΠΎΠ³Π΄Π° ΡΠ΄Π΅Π»Π°Π½Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ API.
- ΠΠΈΠ½ΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ: ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π½Π΅ Π½Π°ΡΡΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
- ΠΠ°ΡΡ-Π²Π΅ΡΡΠΈΡ: ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²Ρ Π½Π΅ Π½Π°ΡΡΡΠ°Π΅ΡΠ΅ ΡΡΡ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² npm Π±Π΅ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ ^
(ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΌΠ»Π°Π΄ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ).
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ npm ΠΈ ΡΠ·Π½Π°Π»ΠΈ:
- Π² ΠΊΠ°ΠΊΠΈΡ
ΡΠ°ΠΉΠ»Π°Ρ
Ρ
ΡΠ°Π½ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
(
package.json
,package-lock.json
). - ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ (
npm install
), Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ (npm ci
) ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π°ΡΠ΄ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (npm audit
). - ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (
npm publish
).
ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π²ΠΎ ΡΡΠΎΠ½ΡΠ΅Π½Π΄. ΠΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ?
ΠΡΠ»ΠΈ 15 Π»Π΅Ρ Π½Π°Π·Π°Π΄ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ΅Π±Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π½Π°ΡΡ HTML, CSS ΠΈ JavaScript, ΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΡΡΠΈ Π½Π΅ ΠΎΡΡΡΠ°Π΅Ρ ΠΎΡ Π±ΡΠΊΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ΅ΠΊΠΎΠ². Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°Π½ΠΈΡ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠΊ ΠΎΡ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΎ ΡΡΠ°ΠΆΠ΅ΠΌ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΊΡΡΡ Β«Frontend Basic: ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π±Π°Β», Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ:
- ΠΎΡΠ²ΠΎΠΈΡΠ΅ ΡΡΠ΅ΠΊ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅;
- ΡΠ²Π΅ΡΡΡΠ°Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΠΊΠ΅Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄Π΅ΠΊΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° HTML ΠΈ CSS;
- ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JavaScript ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ;
- ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ΡΡ, ΠΊΠ°ΠΊ JavaScript ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ backend ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ;
- ΡΠ³Π»ΡΠ±ΠΈΡΠ΅ΡΡ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½Π° React.js ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½;
- ΠΈΠ·ΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ GIT, Π²Π°ΠΆΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.