[yarn] npm을 막고 yarn으로 강제하는 방법

2023. 3. 2. 19:11·Knowledge/Web
반응형

yarn 로고

 
패키지 매니저로 yarn을 사용하는데, 협업하는 과정에서 실수로 `npm` 명령어를 사용해서 `package-lock.json` 파일이 생성되는 경우가 종종 발생한다.
 
그때 마다 'npm 사용하지 마시고, yarn을 사용해주세요.'라고 말해야 하는 상황(시간이 지나서 또 package-lock.json 파일이 올라온다면...)을 피하고 싶다면 npm을 막고 yarn으로 강제하자.
 
3가지의 강제화 방법이 있다.
 

package.json 파일의 scripts 속성의 preinstall 속성을 이용한 강제화 (추천)

// package.json
{
	// ... 생략
  "scripts": {
    // ... 생략
    "preinstall": "node -e 'if(!/yarn\\.js$/.test(process.env.npm_execpath))throw new Error(\"yarn을 사용해주세요\")'"
  }	
}

 
`$ npm install` 실행시 결과

앞으로 후술할 Engines를 사용하는 방식처럼 따로 .npmrc 파일을 만들 필요가 없고, only-allow 방식처럼 라이브러리를 사용할 필요도 없다.
 

Package.json 파일의 Engines 값을 이용한 강제화

// package.json

{
  // ... 생략
  "engines": {
    "npm": "npm 대신 yarn을 사용해주세요"
  }
}

 

package.json 파일이 있는 위치에 .npmrc 파일을 생성하여 다음 코드를 추가해야 한다.

// .npmrc
engine-strict = true

 
`$ npm install` 실행 시 결과

 

only-allow 라이브러리 사용 (개인적으로 비 추천)

only-allow 라이브러리를 사용하면 원하는 패키지 매니저로 강제할 수 있다.
npm 주소 - https://www.npmjs.com/package/only-allow
하지만 굳이 라이브러리를 써야 하나 싶다. 또한 `boxen`과 `which-pm-runs` 라이브러리에 의존되어있기도 하다.


REFERENCE

Force yarn install instead of npm install for node modules - https://stackoverflow.com/a/41233367
How to Force Use Yarn or NPM - https://www.freecodecamp.org/news/how-to-force-use-yarn-or-npm/

반응형
저작자표시 동일조건 (새창열림)
'Knowledge/Web' 카테고리의 다른 글
  • 페이지 성능 최적화
  • npm과 npx의 차이
  • 함수형 프로그래밍 전문가 되기 (Part 6)
  • 함수형 프로그래밍 전문가 되기 (Part 5)
SooJae
SooJae
코드는 효율적으로, 공부는 비효율적으로
    반응형
  • SooJae
    이수재 블로그
    SooJae
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Spring (8)
      • Next.JS (4)
      • React (3)
      • Angular (1)
      • Language (6)
        • Java (1)
        • Kotlin (1)
        • Javascript (4)
      • Keycloak (5)
      • Knowledge (16)
        • Test (4)
        • Web (9)
        • Security (2)
        • Data Structure (1)
      • Infra (9)
        • Proxmox (2)
        • AWS (0)
        • Kubernetes (3)
      • Tools (1)
        • IntelliJ (1)
      • Algorithm (2)
      • Tistory (4)
      • ETC (1)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링 번역
    Auth
    티스토리챌린지
    springboot
    GPT
    오블완
    test
    Functional Programming
    ai
    javascript
    ChatGPT
    Kotlin
    spring ai
    deepl api
    keycloak
    React
    스프링 ai
    openAI
    Next.js
    웹 마스터 도구
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
SooJae
[yarn] npm을 막고 yarn으로 강제하는 방법
상단으로

티스토리툴바