Choisir les dépendances JavaScript

Choisir les dépendances JavaScript



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:





StackOverflow:







(), . , 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.



Definitely Typed :



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. !




All Articles