salut! Je m'appelle Slava Fomin, je suis développeur principal chez DomClick. Au cours de mes 16 années de pratique, j'ai été à la pointe de l'émergence et du développement de JavaScript en tant que standard et écosystème. Dans notre entreprise, nous utilisons JavaScript, tout d'abord, pour le développement frontal avancé et avons réussi à essayer un assez grand nombre de technologies, d'outils et d'approches différents, et à obtenir beaucoup de clichés. Le résultat de ce travail minutieux a été l'expérience la plus précieuse que je souhaite partager avec vous.
, , , . , , . , , .
, :
- , .
- .
- semver .
- , .
- (resolving).
- .
- .
- , .
- lock- .
- , .
- , .
- CI/CD.
- .
, !
… , ; , , , , , , , …
—
, , -, , . , - , ?
-, - . , , , Angular, React, Express, Lodash, Webpack , .
JavaScript
« », ( jQuery) , . , : . , . .
, , . , , .
Node.js
- Node.js, , , JavaScript-, front-end , , SSR . , Node.js (Node Package Manager, npm), , JavaScript.
, ESM JavaScript : script
. Node . CommonJS ( «/ JavaScript», CJS), - . Node (Node.js module resolution algorithm) , .
, Node.js , - JavaScript-.
: npm- — JavaScript. . .
, , , , npm registry. npm registry, registry.npmjs.org. npm registry ( ). , registry. ( npm).
npm.
, . , (, lodash), , (, webpack).
. , . , , , . , :
npm ls
— , : HTTP- Express ( ) Lodash ( ). , debug
4 . deduped
, npm ( ).
Node Unix, - , . , , . , node_modules
, . , JavaScript :
? , , -: package.json. , :
, :
dependencies
,devDependencies
,peerDependencies
,optionalDependencies
.
JSON-, , — , .
:
{
…
"dependencies": {
"lodash": "^4.17.15",
"chalk": "~2.3",
"debug": ">2 <4",
},
…
}
.
dependencies
dependencies
, . Node.js. - , import { get } from 'lodash'
, dependencies
. , , .
devDependencies
devDependencies
, , . , typescript, webpack, eslint . , .
peerDependencies
peerDependencies
. , Webpack, peerDependencies
webpack, .
, , , .
peerDependencies
, , . , . , , Webpack, .
optionalDependencies
optionalDependencies
, . , .
, , , try… require… catch
.
front-end
. , Node.js, , , . , front-end .
- , npm- front-end , , : «» , node npm.
front-end . , front-end Node.js.
Node.js- , npm registry, , . dependencies
.
front-end npm registry, () , , CDN. -, npm front-end , . private: true
, , npm-registry. , . . «» .
front-end dependencies
, , : dependencies
, , , lodash
, react
, date-fns
. ., devDependencies
— , : webpack
, eslint
, @types
. .
, , Node.js! , , , devDependencies
. .
npm semver ( Semantic Versioning ( )).
, : (major) , (minor) patch-:
: 3.12.1.
, , , .
patch- , , .
minor- , , .
major- , API, , , , . CHANGELOG .
1.0.0, , 0.0.3 0.1.2, semver : .