Memilih dependensi JavaScript

Memilih dependensi JavaScript



Halo! Di posting sebelumnya, kami berbicara secara rinci tentang menambahkan dependensi ke proyek dan tentang cara serta strategi untuk memperbaruinya.



Dalam posting ini, seperti yang dijanjikan, saya ingin mulai membahas masalah yang sangat penting seperti stabilitas dan keamanan dalam manajemen ketergantungan. Semoga tips saya akan membantu Anda mengendalikan kekacauan, mengurangi risiko, dan selalu berada di sisi yang aman!



Kekacauan terkendali



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