اختيار تبعيات JavaScript

اختيار تبعيات JavaScript



مرحبا! في المنشور السابق ، تحدثنا بالتفصيل عن إضافة التبعيات إلى مشروع وعن طرق واستراتيجيات تحديثها.



في هذا المنشور ، كما وعدت ، أريد أن أبدأ في مناقشة قضايا مهمة للغاية مثل الاستقرار والأمن في إدارة التبعية. آمل أن تساعدك نصائحي في التحكم في الفوضى وتقليل المخاطر والبقاء دائمًا في الجانب الآمن!



فوضى خاضعة للرقابة



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