рд▓рд╛рд░реНрдирд╛ рдФрд░ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдВ

рдЬрд╛рдирдиреЗ рдФрд░ рдзрд╛рдЧрд╛

рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдореЛрдиреЛ-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдЬрд╝ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдЬреИрд╕реЗ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЛ-рдЖрдзрд╛рд░рд┐рдд рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдореБрдЦреНрдп рд▓рд╛рдн рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЛрдиреЛ-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдФрд░ рд▓рд░реНрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ ред рдЦреИрд░, рдЪрд▓реЛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!

рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рдкреИрдХреЗрдЬ / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рддреАрди рдкреБрд╕реНрддрдХрд╛рд▓рдп, рд╕рд╛рде рд╣реА рд╕рд╛рде рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ package.json рд╣реЛрдЧрд╛ ред

тФЬтФАтФА package.json тФФтФАтФА packages тФЬтФАтФА app тФВ  тФЬтФАтФА index.js тФВ  тФФтФАтФА package.json тФЬтФАтФА first тФВ  тФЬтФАтФА index.js тФВ  тФФтФАтФА package.json тФФтФАтФА second тФЬтФАтФА index.js тФФтФАтФА package.json 

рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рд╕рд╛рде рд╣реА рдПрдХ рдРрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рджреЛ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛ред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╕рднреА рддреАрди рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕рдВрдХреБрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЙрдиреНрд╣реЗрдВ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдирд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХреГрдд рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрдЧрд╣ рджреЗрдВрдЧреЗред

рдкреНрд░рдпреЛрдЧ рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ index.js рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдУрд░ рд╕реЗ рдПрдХ рд╣реИрд▓реЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 // packages/first/index.js const first = () => 'Hi from the first module'; module.exports = first; 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдРрдк рд╕реЗ рд╣рд╛рдп , рд╕рд╛рде рд╣реА рджреЛ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рд╢реБрднрдХрд╛рдордирд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ:

 // packages/app/index.js const first = require('@monorepo/first'); const second = require('@monorepo/second'); const app = () => 'Hi from the app'; const main = () => { console.log(app()); console.log(first()); console.log(second()); }; main(); module.exports = { app, main }; 

рддрд╛рдХрд┐ рдРрдк рдореЗрдВ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рд╣рдо рдкреИрдХреЗрдЬ рдХреЗ рдореБрдЦреНрдп рдирд╛рдо рдХреЗ рд╕рд╛рдордиреЗ рдореВрд▓реНрдп рдореЗрдВ рдирд╛рдо рдХреЗ рдЙрдкрд╕рд░реНрдЧ @ рдореЛрдиреЛрд░рдкреЛ / рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ ред

 // packages/app/package.json { "name": "@monorepo/app", "version": "1.0.0", "main": "index.js", "license": "MIT", "dependencies": { "@monorepo/first": "^1.0.0", "@monorepo/second": "^1.0.0" } } 

рдореБрдЭреЗ рдкреИрдХреЗрдЬ рдирд╛рдо npm (@ monorepo /) рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдХреБрддреНрддреЗ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛ рдкреИрдХреЗрдЬ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рд╣реИ рдЬреЛ рдХрдИ рдореЛрдиреЛрд░реЗрдкреЛрдЬрд╝рд┐рдЯрд░реАрдЬрд╝ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ: рд╢рд┐рд╢реБрдУрдВ,
рд╕рд╛рдордЧреНрд░реА ui , рдХреЛрдгреАрдп рдФрд░ рдЕрдиреНрдпред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рд╕рдВрдЧрдарди рдХреА npm рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рджрд╛рдпрд░рд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ @ somescope / postfix рдХреЗ рд╕рд╛рде рд╕рднреА рдореЙрдбреНрдпреВрд▓ somescope рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдФрд░ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмрд░реНрддрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ @ myscopename рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рд╣рдо рд▓рд╛рдареА рдФрд░ рдпреБрд╡рд╛ рдорд╣рд┐рд▓рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдмрд░реНрддрди ( @ myscopename / рдмрд░реНрддрди ) рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдбреЗрдЯрд╛, рд╕рддреНрдпрд╛рдкрди рдЙрдкрдХрд░рдг, рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдпрд╛ рдпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд┐рд░реНрдл рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рд╡реЗрдм рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░рдорд╢рдГ рд░рд┐рдПрдХреНрдЯ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХреЛрдВ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╛рдж рдореЗрдВ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ Node.js рдкрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЬреАрд╡рди рд╕реЗ рдмрд╣реБрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдорд▓рд╛ рдорд┐рд▓рддрд╛ рд╣реИред

рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрд╕реНрдерд╛рди


рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдореЛрдиреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрдбрд╝ рдореЗрдВ package.json рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реЛрдЧрд╛ред рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рд╕рдВрдкрддреНрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рд╣рдордиреЗ рдкреИрдХреЗрдЬ / * рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ " рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рднреА рдЙрдкрдХреБрдВрдЬрд┐рдпреЛрдВ"ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдРрдк рд╣реИ , рдкрд╣рд▓рд╛ , рджреВрд╕рд░рд╛ ред

 // package.json { "name": "monorepo", "version": "1.0.0", "main": "packages/app/index.js", "license": "MIT", "private": true, "workspaces": [ "packages/*" ] } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдирд┐рдЬреА": true рдХреЛ package.json рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдХреЗрд╡рд▓ рдирд┐рдЬреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рд╕рдм рдХреБрдЫ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдпрд╛рд░реНрди рдХрдорд╛рдВрдб ( рдпрд╛рд░реНрди рдЗрдирд╕реНрдЯреЙрд▓ рдпрд╛ рдПрдирдкреАрдПрдо рдЗрдВрд╕реНрдЯрд╛рд▓ ) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рдРрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдореМрдЬреВрдж рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд░реВрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо npm-рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдХреБрдЫ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╕ рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреЛ "рд▓рд┐рдВрдХ" рдХрд░реЗрдВред

 yarn 

рдЫрд╡рд┐

рдЕрдм рд╣рдо рдиреЛрдб рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдХреБрд▓ / рдПрдк / index.js рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪрд▓рд╛рдПрдЧрд╛ред

 node . 

рдЫрд╡рд┐

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╛рд░реНрди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ , рд╣рдордиреЗ рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдорд╛рд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╛рдПред

рдЫрд╡рд┐

рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдЗрд╕ рд░рд┐рд╢реНрддреЗ рдХреЗ рдХрд╛рд░рдг, рд╣рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рдорд┐рд▓рд╛ - рдЕрдм, рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрджрд▓рддреЗ рд╕рдордп, рд╣рдорд╛рд░рд╛ рдРрдк рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд┐рдирд╛ рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рдВрдХреБрд▓ рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рд╡реЗ рдЕрдВрддрддрдГ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ)ред

рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЬреЛ рдЕрдЧрд▓рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реАрдЬрд╝ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдЧрдардиред

рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд░рд╣рдиреЗ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдЙрдкрдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рд╕реЗ рдпрд╛рд░реНрди рдПрдб рд▓реЙрд╢ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ , рд╣рдо рд╕реНрдерд╛рдиреАрдп рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред Json - рдкреИрдХреЗрдЬ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
 "dependencies": { "lodash": "^4.17.11" } 

рдЦреБрдж рдХреЛ рд▓реЙрд╢ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП - рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЛрдб рд╕реНрддрд░ рдкрд░ рдПрдХ рдмрд╛рд░ рдореВрд▓ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬ рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓реЙрд╢ рдореЗрдВ ) рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд▓реЙрд╢ v3.0.0 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ v4.0.0 рдореЗрдВ ), рддреЛ рдирд┐рдЪрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг ( 3.0.0 ) рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рд░реВрдЯ рдиреЛрдб_рдореЙрдбрд▓ рдХреЛ рдорд┐рд▓реЗрдЧрд╛ , рдФрд░ рджреВрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд▓реЙрд╢ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдиреАрдп рдкреИрдХреЗрдЬ / рд╕реЗрдХрдВрдб / рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдлрд╛рдпрджреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдорд╛рдореВрд▓реА рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╛рд░реНрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЭрдВрдбреЗ рдХреА рдорджрдж рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдРрд╕реА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд▓рд░реНрди рдЬреЛрдбрд╝реЗрдВ


рд▓рд╛рд░рдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди ( рдпрд╛рд░реНрди рдЧреНрд▓реЛрдмрд▓ рдРрдб рд▓рд░реНрди рдпрд╛ рдПрдирдкреАрдПрдо-рдЬреА рд▓рд░реНрди ) рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк npx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рд▓реЗрд░реНрдирд╛ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВрдЧреЗ:

 lerna init 

рдЫрд╡рд┐

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдХрдорд╛рдВрдб рдХреА рдорджрдж рд╕реЗ рдПрдХ рд╕рд╛рде рдХрдИ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреАрдВ: рдПрдХ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдИ (рдпрджрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдПрдХ lerna.json рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдФрд░ рд╣рдорд╛рд░реЗ рд░реВрдЯ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред json ред

рдЕрдм рдирдИ рдмрдирд╛рдИ рдЧрдИ lerna.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ , рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ - "npmClient": "рдпрд╛рд░реНрди" рдФрд░ "рдпреВрдЕрд░рд╡рд░реНрдХреНрд╕рд╕реНрдкреЗрд╕": рд╕рдЪ ред рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХрд╣рддреА рд╣реИ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдРрдк / рдиреЛрдб_рдореЙрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

 // lerna.json { "npmClient": "yarn", "packages": [ "packages/*" ], "version": "1.0.0", "useWorkspaces": true } 

рд▓рд░реНрди рдХреЗ рд╕рд╛рде рдЯреЗрд╕реНрдЯ


рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд░реНрди рдРрдб рдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ, рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдЬреЗрд╕реНрдЯ ред рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

 yarn add -DW jest 

рдореБрдЭреЗ -DW рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
-D (- рджреЗрд╡) рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬреЗрд╕реНрдЯ рдкреИрдХреЗрдЬ рдХреЛ рджреЗрд╡ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ -W рдлреНрд▓реИрдЧ (- рдЗрдЧреНрдиреЛрд░-рд╡рд░реНрдХрд╕реНрдкреЗрд╕-рд░реВрдЯ-рдЪреЗрдХ) рд░реВрдЯ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдЕрдЧрд▓рд╛ рдХрджрдо рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдорд╛рди рдмрдирд╛рдПрдВрдЧреЗред рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

 // packages/first/test.js const first = require('.'); describe('first', () => { it('should return correct message', () => { const result = first(); expect(result).toBe('Hi from the first module'); }); }); 

рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 // packages/*/package.json ... "scripts": { "test": "../../node_modules/.bin/jest --colors" }, ... 

рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рд░реВрдЯ package.json рдХреЛ рдЕрджреНрдпрддрди рдХрд░реЗрдЧрд╛ред рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рд▓реЗрд░реНрдирд╛ рд░рди рдЯреЗрд╕реНрдЯ --рд╕реНрдЯреНрд░реАрдо рдХрд╣реЗрдЧреА ред рд▓реЗрд░реНрдирд╛ рд░рди рдХреЗ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕ рдХрдорд╛рдВрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреИрдХреЗрдЬ / рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╣рдорд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ -рд╕реНрдЯреНрд░реАрдо рдлреНрд▓реИрдЧ рд╣рдореЗрдВ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдирддреАрдЬрддрди, рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ package.json рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 // package.json { "name": "monorepo", "version": "1.0.0", "main": "packages/app/index.js", "license": "MIT", "private": true, "workspaces": [ "packages/*" ], "scripts": { "test": "lerna run test --stream" }, "devDependencies": { "jest": "^24.7.1", "lerna": "^3.13.2" } } 

рдЕрдм, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рд╕реЗ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 yarn test 

рдЫрд╡рд┐

рд╡рд░реНрдЬрди рдХреЛ рд▓рд░реНрди рдХреЗ рд╕рд╛рде рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ


рдЕрдЧрд▓рд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдп, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд▓рд░реНрди рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ 1.0.0 рд╕реЗ 2.0.0 рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд▓рд╛рдЗрди рдХреЛ "рдЕрджреНрдпрддрди: рд╕рдВрд╕реНрдХрд░рдг" рдЬреЛрдбрд╝реЗрдВ: "lerna version --no-push" рдХреЛ рд░реВрдЯ package.json рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдФрд░ рдлрд┐рд░ рдпрд╛рд░реНрди рдЕрджреНрдпрддрди рдЪрд▓рд╛рдПрдБ : рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг ред --рдиреЛ-рдкреБрд╢ рдлреНрд▓реИрдЧ рдХреЛ рдЗрд╕рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рднреЗрдЬреЗ рдЬрд╛рдПрдВ, рдЬреЛ рдХрд┐ рд▓рд░реНрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдЗрд╕ рдзреНрд╡рдЬ рдХреЗ рдмрд┐рдирд╛) рдХрд░рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░рд╛ рдореВрд▓ рдкреИрдХреЗрдЬ.рдЬреЙрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 // package.json { "name": "monorepo", "version": "1.0.0", "main": "packages/app/index.js", "license": "MIT", "private": true, "workspaces": [ "packages/*" ], "scripts": { "test": "lerna run test --stream", "update:version": "lerna version --no-push" }, "devDependencies": { "jest": "^24.7.1", "lerna": "^3.13.2" } } 

рд╕рдВрд╕реНрдХрд░рдг рдЕрджреНрдпрддрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ:

 yarn update:version 

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдПрдВрдЯрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдореЗрдВ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рдирдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЫрд╡рд┐

рд╣рдо рд╡рд╛рдИ рджрд░реНрдЬ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рд╕рдлрд▓ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЕрдЧрд░ рд╣рдо git рд╕реНрдЯреЗрдЯрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реИ, рд╡рд░реНрдХрд┐рдВрдЧ рдЯреНрд░реА рдХреНрд▓реАрди lerna рд╡рд░реНрдЬрди рди рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рд╡рд░реНрдЬрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдирдП рд╡рд░реНрдЬрди (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ v2.0.0) рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП рдПрдХ рдХрдорд┐рдЯ рдФрд░ рдЯреИрдЧ рднреА рдмрдирд╛рддрд╛ рд╣реИред

рд▓реЗрд░реНрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдпрджрд┐ рдЖрдк рд▓рд╛рдЗрди "рд╕рдВрд╕реНрдХрд░рдг" рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: "lerna version --no-push" рдХреЗ рдмрдЬрд╛рдп "update: version": рд░реВрдЯ рдкреИрдХреЗрдЬ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ "lerna version --no-push" , рддреЛ рдЖрдк рд╕рдВрднрд╡рддрдГ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдкрд╛рд░ рдЖ рд╕рдХрддреЗ рд╣реИрдВред рд▓рд╛рд▓ рд╕рд╛рдВрддреНрд╡рдирд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдирдкреАрдПрдо-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕рдВрд╕реНрдХрд░рдг рдХрдорд╛рдВрдб (рдЖрд░рдХреНрд╖рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд▓рд╛рд░реНрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди: рд╕рдВрд╕реНрдХрд░рдг , рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЙрди рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╕реМрд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдЬреЛ рд▓рд░реНрди рдореЗрдВ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрднреА рддрдХ рдореБрдЭреЗ рд░реВрд╕реА рдореЗрдВ рдореЛрдиреЛрд░реЗрдкреЛрдЬрд╝рд┐рдЯрд░реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╢реБрд░реБрдЖрдд рдХреА рдЧрдИ рд╣реИ!

рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рднрдВрдбрд╛рд░ рд╕реЗ рд▓рд┐рдВрдХ ред

Source: https://habr.com/ru/post/hi448766/


All Articles