Escolhendo dependĂŞncias de JavaScript

Escolhendo dependĂŞncias de JavaScript



Olá! No post anterior, falamos em detalhes sobre como adicionar dependências a um projeto e sobre as formas e estratégias de atualizá-las.



Nesta postagem, como prometido, quero começar a discutir questões extremamente importantes, como estabilidade e segurança no gerenciamento de dependências. Espero que minhas dicas ajudem você a controlar o caos, reduzir riscos e sempre ficar do lado seguro!



Caos controlado



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