node_modules 와 package.json

2021. 12. 8. 13:02Β·Web/Nodejs

 

🎯 Goals

  • node_modules ν•œ ν”„λ‘œμ νŠΈ 내에 μ—¬λŸ¬κ°œ 있으면 μ’‹μ„κΉŒ?
  • package.json ν•œ ν”„λ‘œμ νŠΈ 내에 μ—¬λŸ¬κ°œ 있으면 μ’‹μ„κΉŒ?
  • 각 파일(λͺ¨λ“ˆ)이 νŒ¨ν‚€μ§€λ₯Ό μ°Ύμ•„κ°€λŠ” 원리λ₯Ό νŒŒμ•…ν•œλ‹€.

 

node_modules

이런 ꡬ쑰λ₯Ό κ°–λŠ”λ‹€κ³  ν•΄λ³΄μž.

μ‹€μ œ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„€μΉ˜λ˜λŠ” 디렉토리
λͺ¨λ“ˆμ΄ 경둜λ₯Ό λͺ…μ‹œν•˜μ§€ μ•Šκ³  νŒ¨ν‚€μ§€ μ΄λ¦„λ§Œ λ©κ·ΈλŸ¬λ‹ˆ λͺ…μ‹œν•˜λ©΄ 이 파일 λ‚΄μ—μ„œ λΆˆλŸ¬μ˜¨λ‹€.
// orchestration.ts

// [CASE I] νŒ¨ν‚€μ§€λͺ…λ§Œ λͺ…μ‹œ
import axios from 'axios';

// [CASE II] μƒλŒ€κ²½λ‘œ μ§€μ •
import requestConfig from '../../config/axiosRequestConfig.json';

// (μƒλž΅)

CASE I

ν˜„μž¬ 파일의 ν•œ 단계 μƒμœ„λ””λ ‰ν† λ¦¬(src/node_modules) μ—μ„œ node_modules λ₯Ό μ°ΎλŠ”λ‹€. => Not found

μ—†μœΌλ©΄ ν•œ 단계 μƒμœ„λ””λ ‰ν† λ¦¬λ‘œ 더 μ˜¬λΌκ°„λ‹€. (typescript_test/node_modules) => Success

찾을 λ•Œ κΉŒμ§€ μž¬κ·€μ μœΌλ‘œ μƒμœ„λ””λ ‰ν† λ¦¬μ—μ„œ node_modules λ₯Ό μ°ΎλŠ”λ‹€.

 

 

⚠️ 파일 ν™•μž₯자λ₯Ό μƒλž΅ν•΄μ•Όν•œλ‹€.
ex) 'axios'

CASE II

μƒλŒ€κ²½λ‘œλ₯Ό μ§€μ •ν•œ κ²½μš°μ—λŠ” ν˜„μž¬ 파일의 μœ„μΉ˜μ— 맞게 rootDir λ‚΄μ—μ„œ νŒŒμΌμ„ μ°ΎλŠ”λ‹€.

(rootDir 보닀 μƒμœ„λ””λ ‰ν† λ¦¬λ‘œ 갈 경우 permission denied λœλ‹€.)

⚠️ 파일 ν™•μž₯자λ₯Ό λͺ…μ‹œν•΄μ•Όν•œλ‹€.
ex) '../../sum.js'

 

package.json

νŒ¨ν‚€μ§€ λͺ©λ‘κ³Ό ν”„λ‘œμ νŠΈ κΈ°λ³Έ 정보 및 λΉŒλ“œλ°©μ‹ λ‹΄λŠ” 파일

μ‹€μ œ μ˜μ‘΄μ„± νŒ¨ν‚€μ§€λŠ” dependencies

개발용 νŒ¨ν‚€μ§€λŠ” devDependencies 에 λ¦¬μŠ€νŒ…ν•œλ‹€.

여기에 λ¦¬μŠ€νŒ…λœ νŒŒμΌμ€ node_modules 에 μ„€μΉ˜λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 뜻으둜

 

# ν˜„μž¬ λ””λ ‰ν† λ¦¬μ˜ package.json 에 λ‹΄κΈ΄
# λͺ¨λ“  μ˜μ‘΄μ„± νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜
$ npm install

 

 

tsconfig.json

νƒ€μž…μŠ€ν¬λ¦½νŠΈ 컴파일러 μ˜΅μ…˜, ν”„λ‘œμ νŠΈ λŒ€μƒ νŒŒμΌμ„ λͺ…μ„Έν•˜λŠ” 파일

 

⚠️ ts-node 둜 μ‹€ν–‰ν•  λ•Œ λ‹€λ₯Έ 디렉토리 νŒŒμΌμ„ μ„±κ³΅μ μœΌλ‘œ import ν•˜μ§€ λͺ»ν•œλ‹€.

 

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ°μœ„ν•΄ tsconfig-paths 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆμ§€λ§Œ

ts-node νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ»΄νŒŒμΌλŸ¬λŠ” 맀번 컴파일 / μ‹€ν–‰ν•˜κΈ° λ•Œλ¬Έμ— νΌν¬λ¨ΌμŠ€κ°€ μ €ν•˜λœλ‹€λŠ” μ΄μŠˆκ°€μžˆλ‹€.

--transpile-only  κ°™μ€ μ˜΅μ…˜μ„ 톡해 컀버가 κ°€λŠ₯ν•˜λ‹€ν•΄λ„ 이도 μ™„λ²½ν•œ μ†”λ£¨μ…˜μ΄ μ•„λ‹ˆλΌ 좔후에 쑰사가 ν•„μš”ν•˜λ‹€.

 

λ‹€μŒκ³Ό 같이 tsconfig.json 을 μž‘μ„±ν•΄λ³Ό 수 μžˆλ‹€.

 

 

μ• μ΄ˆμ— production μ œν’ˆμ„
ts-node 둜 μ‹€ν–‰ν•˜λŠ” 것이 쒋은 선택이 μ•„λ‹ˆλ‹€.
πŸ“ νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μ–΄λ””κΉŒμ§€λ‚˜ κ°œλ°œμš©μ΄λ‹€.
μ‹€μ œ μ œν’ˆμ—λŠ” 트랜슀파일된 .js νŒŒμΌμ„ μ‹€ν–‰ν‚€μž.

 

 

Node.js + Typescript Tip

Node.js 버전에 λ”°λΌμ„œ ν˜Έν™˜λ˜λŠ” ECMAScript 버전을 tsconfig.json 에 μ μ ˆν•œ λ²„μ „μœΌλ‘œ λͺ…μ‹œν•΄μ•Όν•œλ‹€.

νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μ–΄μ°Œλλ“  μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ 트랜슀파일된 후에 μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ—

트랜슀파일 λŒ€μƒ μžλ°”μŠ€ν¬λ¦½νŠΈ 문법 버전 (ECMAScript version) 을 μ„€μ •ν•  수 μžˆλ‹€.

 

tsconfig.json example

 

ꡬ버전 node.js λ₯Ό μ‚¬μš©ν•  경우 μ΅œμ‹  ECMAScript 문법을 μΈμ‹ν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ—

개발 ν™˜κ²½μ— λ§žλŠ” 버전 λͺ…μ‹œκ°€ ν•„μš”ν•˜λ‹€.

 

 


πŸ”— Reference

 

How can I make multiple projects share node_modules directory?

Whenever I make projects, I have to download all dependencies of node modules. Without copying the node_modules, Is there anyway to share the central node_modules in multiple projects? like the

stackoverflow.com

 

GitHub - dividab/tsconfig-paths: Load node modules according to tsconfig paths, in run-time or via API.

Load node modules according to tsconfig paths, in run-time or via API. - GitHub - dividab/tsconfig-paths: Load node modules according to tsconfig paths, in run-time or via API.

github.com

 

GitHub - microsoft/TypeScript: TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

TypeScript is a superset of JavaScript that compiles to clean JavaScript output. - GitHub - microsoft/TypeScript: TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

github.com

 

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'Web > Nodejs' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Node.js process μ’…λ£Œ 이벀트 감지  (2) 2021.12.23
[Node.js] λ‘œμ»¬μ— μ„€μΉ˜λœ νŒ¨ν‚€μ§€ λͺ…λ Ήμ–΄(CLI)둜 μ‹€ν–‰ν•˜κΈ°  (0) 2021.07.27
[Typescript] Creating Custom Types  (0) 2021.06.21
imagemagick module PDF->png κΆŒν•œ μ„€μ • Error  (0) 2020.02.06
Error: Cannot find module  (0) 2020.01.15
'Web/Nodejs' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • Node.js process μ’…λ£Œ 이벀트 감지
  • [Node.js] λ‘œμ»¬μ— μ„€μΉ˜λœ νŒ¨ν‚€μ§€ λͺ…λ Ήμ–΄(CLI)둜 μ‹€ν–‰ν•˜κΈ°
  • [Typescript] Creating Custom Types
  • imagemagick module PDF->png κΆŒν•œ μ„€μ • Error
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (λ¬Έμ œν’€μ΄) (56)
        • Algorithm (이둠) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • 기타 (70)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • μž‘λ™μ‚¬λ‹ˆ (27)
      • μž¬ν…Œν¬ (11)
        • 세무 (4)
        • 투자 (3)
        • λ³΄ν—˜ (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • μ‹œμŠ€ν…œ λ³΄μ•ˆ (5)
      • λ„€νŠΈμ›Œν¬ (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • μ €μž‘κΆŒκ³Ό 슀마트폰의 이해 (0)
      • 생각 λ­‰μΉ˜ (6)
      • ꢁ금증 (2)
      • Private (4)
        • 이직 κ²½ν—˜ (0)
        • κΏˆμ„ μ°Ύμ•„μ„œ (1)
      • Android (21)
        • OS (4)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • WEB
    • μ•Œκ³ λ¦¬μ¦˜
    • DataBase
    • Linux
    • Mobile
    • C
    • λ°©λͺ…둝
  • 링크

    • github
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    λ°±μ€€
    Kotlin
    linux
    ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
    C++
    java
    Git
    android
    docker
    database
    javascript
    JPA
    ubuntu
    μ•Œκ³ λ¦¬μ¦˜
    kafka
    algorithm
    PostgreSQL
    Bitcoin
    Spring
    Programmers
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
M_Falcon
node_modules 와 package.json
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”