[yarn] npm을 막고


원사 로고

저는 실을 패키지 매니저로 사용하고 있는데, 협업 과정에서 우연히 nm 명령으로 패키지 잠금.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 설치 실행했을 때의 결과


후술할 엔진 사용 방식과 같이 별도의 .npmrc 파일을 생성할 필요가 없고, only-allow 방식과 같이 라이브러리를 사용할 필요가 없다.

Package.json 파일의 Engines 값을 사용하여 시행

// package.json

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

package.json 파일로 제자리에 .npmrc 파일을 만들고 다음 코드를 붙여넣습니다.
추가해야합니다

// .npmrc
engine-strict = true

$npm 설치 실행했을 때의 결과


허용 라이브러리만 사용(개인적으로 권장하지 않음)

유일한 허용 라이브러리를 사용하면 원하는 패키지 관리자에 강제로 넣을 수 있습니다.

npm 주소 – https://www.npmjs.com/package/only-allow
하지만 저는 정말로 라이브러리를 작성하고 싶습니다.
또한 권투수업 오후가 달리고 있다 또한 라이브러리에 따라 다릅니다.


참조

노드 모듈에 대해 npm 설치 대신 강제로 yarn 설치 – https://stackoverflow.com/a/41233367
실이나 NPM을 강제로 사용하는 방법 – https://www.freecodecamp.org/news/how-to-force-use-yarn-or-npm/