저는 실을 패키지 매니저로 사용하고 있는데, 협업 과정에서 우연히 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/