salut! Dans le post précédent, nous avons parlé en détail de l'ajout de dépendances à un projet et des moyens et stratégies pour les mettre à jour.
Dans cet article, comme promis, je souhaite commencer à discuter de questions extrêmement importantes telles que la stabilité et la sécurité dans la gestion des dépendances. J'espère que mes conseils vous aideront à contrôler le chaos, à réduire les risques et à toujours rester du bon côté!
Chaos contrôlé
npm — , , . , : , , , . npm , , , .
. , , (). , «», «»? - .
—
, , , . : . .
, . , , , , , .
— (JavaScript) (Node.js API). , , , , . , , 100%, .
, . Babel ( tsc) , (ESNext) API . . , , , . , , , , , .
, - (, lodash). , , , , .
, , , . , . , , . , lodash, ramda underscore , - .
, , - . , , ( ), . , , (, — ).
, . , — .
, , .
? .
, , — . , — , , , .
?
, , , , — . , , , .
, , , .
, GitHub , . , — , . , , , , (. ).
GitHub, registry npm ( «Weekly Downloads» npmjs.com).
, , Google Trends:
(), . , IT OpenSource (Google, Microsoft, Facebook . .). , ( !).
, : , GitHub, , YouTube, (, ).
GitHub. , (, ), ( , ), (issues) ( , ), , PR, .
— . , - ( PR). , , .
, . , ( ). , . , API , .
(changelog) (releases GitHub) patch-, minor- major- , , (semver) . , , .
, . , , , . , , , . , , ?
, CI/CD, . , .
TypeScript, ! ( ). .
, (TypeScript Flow). , , .
, JavaScript ( ), (typing declarations). , . , API , - PR.
npm view @types/<package-name>
<package-name>
— , . , (scope), @
.
:
# "react"
npm view @types/react
# "babel@preset-env"
npm view @types/babel__preset-env
Definitely Typed, , , .
. . , , , , . , .
, : ? ? ? — , , , .
front-end , «» Bundle Phobia, :
. . - , , , : — , . , . , .
, , , . . .
Pro Tip:
- , , , , .
, , , . , , , (. adapter pattern).
( ) , (, dependency injection ).
:
//=======================//
// utils/do-something.js //
//=======================//
//
import { doSomething as libraryDoSomething } from 'third-party-library';
// ,
//
export function doSomething(...args) {
//
// ( )
return libraryDoSomething(...args);
}
//========//
// foo.js //
//========//
import { doSomething } from './utils/do-something';
//
doSomething();
//========//
// bar.js //
//========//
import { doSomething } from './utils/do-something';
//
doSomething(100500, true);
Pro Tip:
, , , , — .
API , . - , , .
, . - , , , .
Awesome Node.js
! ( , , ) node.cool
, Node.js . !
, , .
lock- , CI/CD. !