рд╕рдВрдЧреАрддрдХрд╛рд░ рдмрдирд╛рдо рдПрдирдкреАрдПрдо: рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╛рд╕

рдкрд┐рдЫрд▓реЗ рддреАрди рдпрд╛ рдЪрд╛рд░ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдЬрдм PHP рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЧрдИ, рддреЛ рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП composer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЕрдм nodejs рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА nodejs рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ PhpStorm IDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЖрдкрдХреЛ PHP рдФрд░ JS рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реВрдВ рд╡рд╣ рдмрд╣реБ-рдкреНрд░рддрд┐рд░реВрдкрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рди рд╣реЛ рдХрд┐ рдЖрд╡реЗрджрди рдХреА рдЕрдВрддрд┐рдо рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рдШрдЯрдХреЛрдВ рдореЗрдВ рдЕрдкрдШрдЯрди рдХреЗ рдХрд╛рд░рдг рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдЬрдм рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдХрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВред


рдЫрд╡рд┐


рдПрдХ nodejs рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдХреБрдЫ рдРрд╕реЗ рдлреАрдЪрд░реНрд╕ рдорд┐рд▓реЗ рдЬреЛ рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рдЬрдиреНрдо рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд╣реБрдЖ рдерд╛ред рдХрдЯ рдХреЗ рддрд╣рдд, nodejs рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдкрд░ PHP рдХреА рдирдЬрд╝рд░ред


рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 3 рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  • рдЖрд╡реЗрджрди : рд╕рд┐рд░ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ;
  • рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЙрдбреНрдпреВрд▓ : рдЗрд╕рдореЗрдВ рд╣реЗрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмреБрд▓рд╛рдП рдЧрдП рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
  • рдЖрдзрд╛рд░ рдореЙрдбреНрдпреВрд▓ : рдЗрд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмреБрд▓рд╛рдП рдЧрдП рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ;

рдЫрд╡рд┐


рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб github рдкрд░ рд╕реНрдерд┐рдд рд╣реИ:



рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрдХреЛрдВ ( composer.json package.json рдФрд░ package.json ) рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╡рд┐рд╡рд░рдгрдХ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ php рдореЙрдбреНрдпреВрд▓ рдФрд░ js рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреАрдПрдЪрдкреА рдХреЛрдб рдФрд░ рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдХрд╛рдЯреЗ рдмрд┐рдирд╛, рдмрд╕ рд╕рд╛рдЗрдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдЪрд▓рд╛рдирд╛:


 $ php index.php $ nodejs index.js 

рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо:


 This is application. This is func module. This is base module. 

рд▓рдХреНрд╖реНрдпреЛрдВ


рдПрдХ рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рдЪрд╛рд╣рд┐рдП:


  • рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдИрдбреАрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░реИрдХ;
  • IDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВред
  • рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;

composer рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдирд╛рддреА


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд░реНрдгрдирдХрд░реНрддрд╛ ( рдХрдВрдкреЛрдЬрд╝рд░.рдЬреЙрди ) рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдкрддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:


 { "require": { "flancer64/habr-cvsn-mod-base": "dev-master as 0.1.0", "flancer64/habr-cvsn-mod-func": "dev-master as 0.1.0" }, "repositories": [ { "type": "vcs", "url": "https://github.com/flancer64/habr-cvsn-mod-base" }, { "type": "vcs", "url": "https://github.com/flancer64/habr-cvsn-mod-func" } ] } 

рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:


 $ composer install 

рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд▓реЗ ./vendor рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрджрд▓реЗ рдореЗрдВ ./vendor рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ:


  • ./vendor/
    • ./flancer64/
      • ./habr-cvsn-mod-base/
        • ./.git/
      • ./habr-cvsn-mod-base/
        • ./.git/

рдпрд╣реА рд╣реИ, composer рддреБрд░рдВрдд рд╡рд┐рдХрд╛рд╕ (рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд░реВрдк рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ PhpStorm IDE (рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рддрд╣рдд рдЖрд╢реНрд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рдбрд╛рд▓) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:


рдЫрд╡рд┐


рдФрд░ рдЖрдк рд╕рднреА рд╡рд┐рдХрд╕рд┐рдд рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдЫрд╡рд┐


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


рдЫрд╡рд┐


рдФрд░ рд░рд┐рдореЛрдЯ рдХреЗ рд▓рд┐рдП рдзрдХреНрдХрд╛:


рдЫрд╡рд┐


рдбрд┐рдмрдЧрд┐рдВрдЧ рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдмреЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдХреА рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрди рдкрд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдбрд┐рдмрдЧрд░ рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмреНрд░реЗрдХ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ:


рдЫрд╡рд┐


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг, рдЪрдкреНрдкрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░рд╛рдорджрд╛рдпрдХред


Npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддреИрдирд╛рддреА


composer рд╡рд┐рдкрд░реАрдд composer npm рдпрд╣ рдирд╣реАрдВ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ node_modules рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдХреЛрдИ рднреА рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрд╛рд╣рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрд┐рдерд┐рдм рд╕реЗ) рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:


 { "dependencies": { "habr-cvsn-mod-base": "github:flancer64/habr-cvsn-mod-base", "habr-cvsn-mod-func": "github:flancer64/habr-cvsn-mod-func" } } 

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ npm рдХреЛ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ ( .git рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред


рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:


 $ npm install 

рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХреА рдЬрд╛рддреА рд╣реИрдВ:


рдЫрд╡рд┐


(рдЕрдиреБрдкрд▓рдмреНрдз рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ./.git/ ./node_modules/habr-cvsn-mod-base/ )


рд▓реЗрдХрд┐рди рдбрд┐рдмрдЧрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЖрдзрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:


рдЫрд╡рд┐


рд▓рд┐рдВрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдирд╛рдд рдХрд░реЗрдВ


рддрд╛рдХрд┐ рдореЙрдбреНрдпреВрд▓ ./node_modules/ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, npm рдбреЗрд╡рд▓рдкрд░реНрд╕ ' рд▓рд┐рдВрдХ ' рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рди рдореЙрдбреНрдпреВрд▓реЛрдВ рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЙрдиреНрд╣реЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреА рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╕реНрдерд╛рди рдкрд░ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, /home/alex/work/habr/ ), рдФрд░ рдлрд┐рд░ /usr/lib/node_modules/ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:


 # npm link 

(рдореБрдЭреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЪрд╛рд╣рд┐рдП)


рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 $ npm link habr-cvsn-mod-base $ npm link habr-cvsn-mod-func 

/usr/lib/node_modules/ рдХреЛ /usr/lib/node_modules/ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдореЙрдбреНрдпреВрд▓ /usr/lib/node_modules/ рдФрд░ рдЙрдирд╕реЗ ./node_modules/ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдмрдВрдж рдХрд░ рджреЗрдВред


 $ ls -lh ./node_modules/ total 0 lrwxrwxrwx 1 alex alex 57 j┼лl 2 16:18 habr-cvsn-mod-base -> ../../../../../../usr/lib/node_modules/habr-cvsn-mod-base lrwxrwxrwx 1 alex alex 57 j┼лl 2 16:18 habr-cvsn-mod-func -> ../../../../../../usr/lib/node_modules/habr-cvsn-mod-func 

рдореЙрдбреНрдпреВрд▓ /usr/lib/node_modules/ рдЦреБрдж, рдмрджрд▓реЗ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рдореВрд▓ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВ:


 $ ls -lh /usr/lib/node_modules/ ... lrwxrwxrwx 1 root root 39 j┼лl 2 16:18 habr-cvsn-mod-base -> /home/alex/work/habr/habr-cvsn-mod-base lrwxrwxrwx 1 root root 39 j┼лl 2 16:18 habr-cvsn-mod-func -> /home/alex/work/habr/habr-cvsn-mod-func ... 

рдФрд░ рдЙрдирдХреЗ рд╕реНрдерд╛рдпреА рд╕реНрдерд╛рди рдореЗрдВ, "рдкрдВрдЬреАрдХрд░рдг" рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░ рд╣реЛрддрд╛ рд╣реИ:


 $ ls -lha /home/alex/work/habr/habr-cvsn-mod-base ... drwxrwxr-x 8 alex alex 4,0K j┼лl 2 16:18 .git ... 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IDE рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдЫрд╡рд┐


рдЬрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ:


 $ nodejs index.js internal/modules/cjs/loader.js:670 throw err; ^ Error: Cannot find module 'habr-cvsn-mod-base' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:668:15) at Function.Module._load (internal/modules/cjs/loader.js:591:27) at Module.require (internal/modules/cjs/loader.js:723:19) at require (internal/modules/cjs/helpers.js:14:16) at Object.<anonymous> (/home/alex/work/habr/habr-cvsn-mod-func/src/index.js:3:14) ... 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рдпрдВ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдмреБрдирд┐рдпрд╛рджреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИред рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП -preserve-symlinks рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:


 $ nodejs --preserve-symlinks index.js 

IDE рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ:


рдЫрд╡рд┐


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


рдЫрд╡рд┐


рдЖрдИрдбреАрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХреИрд╢ рдлреНрд▓рд╢ рд╣реЛ рдЧрдпрд╛, рдЖрдИрдбреАрдИ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ)ред


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЬреЗрдПрд╕-рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╡реЗ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреИрд╕реЗ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдВрдпреЛрдЬрди рд╕рд╛рдордиреЗ рдЖрдпрд╛:


рдПрдирдкреАрдПрдо-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЖрдВрддрд░рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреНрд▓реЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ composer рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ ./vendor/ рд╕рдмрдбрд╛рдпрд░реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдмрдЬрд╛рдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд╣рд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдВрдзреЗ рд╣реЛрдиреЗ рдХреЗ, рддреЛ js рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ --preserve-symlinks рдмрд┐рдирд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, PhpStorm IDE рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рд░рд╛рдо рдмрд┐рдВрджреБ рджреЗрдЦрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХреНрд▓реЛрдирд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП composer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп git рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ ./own_modules рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ред рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛:


  • рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЬреБрдбрд╝реЗ ./own_modules/... рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА /usr/lib/node_modules/ ;
  • рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЬреБрдбрд╝реЗ рдореЙрдбреНрдпреВрд▓;
  • ./own_modules/ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ./own_modules/ IDE рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛;

рдЫрд╡рд┐


рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрд╢реНрд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЙрд╕ рд╕рдордп рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрд╢реНрд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд╣рд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред


рд╕рд╛рд░рд╛рдВрд╢


рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди ( composer рд╕рд╛рде PHP рдФрд░ npm рд╕рд╛рде рдЬреЗрдПрд╕) рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ composer npm рддреБрд▓рдирд╛ composer рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрдХреВрд▓ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ composer рдбреЗрд╡рд▓рдкрд░реНрд╕ (2012 рдореЗрдВ рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬ) рдиреЗ npm рдбреЗрд╡рд▓рдкрд░реНрд╕ (2010 рдореЗрдВ рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬ) рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕рд╛рде, npm рднреА рдХрд╛рдлреА рдЖрд░рд╛рдорджрд╛рдпрдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ:


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


All Articles