рдХрдИ рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рджрд┐рдпрд╛, npm install
рд░реВрдЯ рдХреЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд░реВрдЯ node_modules
ред рдпрд╛рд░реНрди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ рдХреА рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ node_modules
ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЙрдк-рдкреИрдХреЗрдЬ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ npm workspace
рдХрдорд╛рдВрдб рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ (рддреБрд▓рдирд╛ рдореЗрдВ yarn workspace
)ред
рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ npm рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рд╕реБрд╡рд┐рдзрд╛ рдпрд╛рд░реНрди рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
npm v7 рдореЗрдВ рдпрд╛рд░реНрди рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕реБрд╡рд┐рдзрд╛ рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛, рдФрд░ v8 рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред
https://blog.npmjs.org/post/186983646370/npm-cli-roadmap-summer-2019
рдореИрдВ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛:
my-script
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП npm workspace @me/workspace-package1 my-script
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ @me/workspace-package1
(рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ / рдкреИрдХреЗрдЬ 1 рдореЗрдВ рд╕реНрдерд┐рдд)cd packages/package1 && npm run my-script
рдореИрдВрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдпрд╛рд░реНрди рдФрд░ npm7 рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рдмрдирд╛рдпрд╛ рд╣реИ:
https://github.com/fabb/npm7-workspaces
npm install
рдЪрд▓рд╛рдПрдВ (рд╕рдлрд▓)cd applications/app1 && npm run build
tsc
рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВрдЕрдм рдпрд╛рд░реНрди рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
yarn
рдЪрд▓рд╛рдПрдВ (рд╕рдлрд▓)cd applications/app1 && yarn run build
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛рд░реНрди рдХреЗ рд╕рд╛рде:
yarn
рдЪрд▓рд╛рдПрдВ (рд╕рдлрд▓)yarn workspace @fabb/app1 build
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП RFC: https://github.com/npm/rfcs/blob/latest/accepted/0026-workspaces.md
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд▓рд┐рдВрдХ RFC https://github.com/npm/rfcs/blob/latest/implemented/0026-workspaces.md рд╣реИ
рдореЗрд░реЗ рдкрд╛рд╕ npm7 рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рд╕реБрд╡рд┐рдзрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдкреНрд░рд╢реНрди рдерд╛ред рдЕрдЧрд░ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдерд╛, рддреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm рдХрдорд╛рдВрдб рдХреНрдпрд╛ рд╣реИред рдпрд╛рд░реНрди рдФрд░ рд▓рд░реНрди рджреЛрдиреЛрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдорд╛рди рд▓реЗрдВред
{
"workspaces": ["packages/*"]
}
root
+ -- packages
+ -- package-a
+ -- package-b
$ yarn workspace package-a add react
lerna add lerna рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
$ lerna add react --scope=package-a
рдПрдХ рдкреНрд░рд╢реНрдиред рдХреНрдпрд╛ npm рдХрд╛рд░реНрдпрд╕реНрдерд╛рди, рдпрд╛рд░реНрди рдХреА рддрд░рд╣ , рднреА "private": true
рдЬрдбрд╝ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЬрдмрдХрд┐ рдЖрджрд░реНрд╢ рдирд╣реАрдВ; рдЬрдм рддрдХ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА, рддрдм рддрдХ рдПрдХ рд╕рдорд╛рдзрд╛рди --prefix
рд╡рд┐рдХрд▓реНрдк ( рдбреЙрдХреНрд╕ рджреЗрдЦреЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реЗрдкреЛ npm7-рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @fabb рдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирд┐рдореНрди рдХреЗ рд╕рд╛рде рдЪрд░рдг 2 рдХреА рдХрдорд╛рди рдмрджрд▓рдирд╛:
npm run --prefix applications/app1 build
рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ:
npm7-workspaces % npm -v
7.0.2
npm7-workspaces % npm run --prefix applications/app1 build
> @fabb/[email protected] build
> tsc index.ts
npm7-workspaces % echo $?
0
рдПрдХ рдкреНрд░рд╢реНрдиред рдХреНрдпрд╛ npm рдХрд╛рд░реНрдпрд╕реНрдерд╛рди, рдпрд╛рд░реНрди рдХреА рддрд░рд╣ , рднреА
"private": true
рдЬрдбрд╝ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
@detj рдирд╣реАрдВ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдпрд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЬрдмрдХрд┐ рдЖрджрд░реНрд╢ рдирд╣реАрдВ; рдЬрдм рддрдХ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА, рддрдм рддрдХ рдПрдХ рд╕рдорд╛рдзрд╛рди
--prefix
рд╡рд┐рдХрд▓реНрдк ( рдбреЙрдХреНрд╕ рджреЗрдЦреЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реЗрдкреЛ npm7-рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @fabb рдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирд┐рдореНрди рдХреЗ рд╕рд╛рде рдЪрд░рдг 2 рдХреА рдХрдорд╛рди рдмрджрд▓рдирд╛:
рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ: