Cli: [рдмрдЧ] рдПрдирдкреАрдПрдо space рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЕрдХреНрддреВре░ 2020  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: npm/cli

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░:

рдХрдИ рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рджрд┐рдпрд╛, 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

рдореИрдВ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛:

  1. рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ рдореЗрдВ my-script рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП npm workspace @me/workspace-package1 my-script рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ @me/workspace-package1 (рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ / рдкреИрдХреЗрдЬ 1 рдореЗрдВ рд╕реНрдерд┐рдд)
  2. рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реАрдбреА рдФрд░ рд╕реАрдзреЗ рд╡рд╣рд╛рдБ рд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП: cd packages/package1 && npm run my-script

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛:

рдореИрдВрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдпрд╛рд░реНрди рдФрд░ npm7 рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рдмрдирд╛рдпрд╛ рд╣реИ:
https://github.com/fabb/npm7-workspaces

  1. рд░реЗрдкреЛ рдореЗрдВ, npm install рдЪрд▓рд╛рдПрдВ (рд╕рдлрд▓)
  2. рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ cd applications/app1 && npm run build
  3. рдмрд┐рд▓реНрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ tsc рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ

рдЕрдм рдпрд╛рд░реНрди рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

  1. рд░реЗрдкреЛ рдореЗрдВ, yarn рдЪрд▓рд╛рдПрдВ (рд╕рдлрд▓)
  2. рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ cd applications/app1 && yarn run build
  3. рдмрд┐рд▓реНрдб рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛рд░реНрди рдХреЗ рд╕рд╛рде:

  1. рд░реЗрдкреЛ рдореЗрдВ, yarn рдЪрд▓рд╛рдПрдВ (рд╕рдлрд▓)
  2. рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ yarn workspace @fabb/app1 build
  3. рдмрд┐рд▓реНрдб рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ

рд╡рд╛рддрд╛рд╡рд░рдг:

  • рдУрдПрд╕: рдореИрдХрдУрдПрд╕ рдХреИрдЯрд╛рд▓рд┐рдирд╛ 10.15.7
  • рдиреЛрдб: v12.18.0
  • npm: 7.0.0-rc.2

рд╕рдореНрдмрдВрдзрд┐рдд

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП RFC: https://github.com/npm/rfcs/blob/latest/accepted/0026-workspaces.md

Bug Enhancement Release 7.x

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЬрдмрдХрд┐ рдЖрджрд░реНрд╢ рдирд╣реАрдВ; рдЬрдм рддрдХ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА, рддрдм рддрдХ рдПрдХ рд╕рдорд╛рдзрд╛рди --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

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд▓рд┐рдВрдХ 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

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 рдирд╣реАрдВ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдпрд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

zypA13510 picture zypA13510  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

goldingdamien picture goldingdamien  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Cohen-Carlisle picture Cohen-Carlisle  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

OnkelTem picture OnkelTem  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MadhuriGurumurthy11 picture MadhuriGurumurthy11  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ