IT TIP

package.json을 통해 "전역"npm 종속성 설치

itqueen 2020. 10. 19. 13:45
반응형

package.json을 통해 "전역"npm 종속성 설치


이 질문에 이미 답변이 있습니다.

패키지가를 통해 설치 될 때 명령 줄을 통해 자동으로 설치 및 실행되기를 원하는 몇 가지 "전역"종속성 (jshint, csslint, buster 등)이 npm install있습니다. 이것이 가능한가?

현재 수동으로 다음을 수행하고 있습니다.

  1. npm install -g <package_name>
  2. 내 프로젝트 내에서 : npm link <package_name>

업데이트 : 방금 npm에 대한 이 기능 요청 을 발견했습니다. scriptspackage.json 내의 구성이 갈 길인 것 같습니다 .

다시 업데이트 : 또는 npm 문서를 읽은 후 .gyp 파일 을 사용해야 합니까? 혼란 스럽습니다.


.NET Framework에서 종속성을 "전역"으로 지정할 수는 없습니다 package.json. 그리고 이것은 당신이 참조한 기능 요청에서 Isaac이 말한 것처럼 의도적으로 설계된 것입니다 .

그래, 우리는 이러지 않을거야.

그러나 "바이너리"는 패키지가 로컬로 설치된 경우에도 계속 사용할 수 있습니다. 그들은 .../node_modules/.bin/. 그리고 preinstall스크립트 로 대기열에 넣을 수 있어야합니다 .

그러나 일련의 명령이 다소 길다면 ( " jshint, csslint, buster 등. "이 제안하는 것처럼) grunt다양한 작업을 수행하는 것과 같은 빌드 도구를 사용하는 것이 좋습니다 .

{
    // ...,

    "scripts": {
        "preinstall": "grunt"
    }
}

로컬 종속성을 설치 한 다음 PATH를 .NET으로 설정하는 bash 스크립트를 사용하는 패턴이 정말 마음에 듭니다 ./node_modules/.bin.

파일 : env.sh

# Add your local node_modules bin to the path for this command
export PATH="./node_modules/.bin:$PATH"

# execute the rest of the command
exec "$@"

그런 다음 bash 명령 전에이 스크립트를 사용할 수 있습니다. Makefile 또는 npm 스크립트와 페어링하는 경우 :

파일 : Makefile

lint :
    ./env.sh csslint my_styles

파일 : package.json

"scripts": {
  "lint": "./env.sh csslint my_styles"
}

이러한 파일의이 작업은 일부 전역 위치에서 csslint를 참조하는 것처럼 보이지만 실제로는 node_modules bin의 버전을 사용합니다.

이것의 정말 놀라운 이점은 다른 노드 모듈과 마찬가지로 이러한 종속성을 쉽게 버전화할 수 있다는 것입니다. 글로벌 설치 솔루션을 고수한다면 다른 프로젝트 중 하나에 필요한 사용자 시스템의 특정 버전을 방해 할 수 있습니다.


이것을 시도해야합니다 : https://github.com/lastboy/package-script

나는 그것을 사용하여 package.json에서 바로 글로벌 npm 패키지를 설치했습니다. 기술적으로 지식이없는 고객에게 적합합니다.

패키지를 설치하지 않은 경우 이미 설치되어 있는지 확인합니다!

참고 URL : https://stackoverflow.com/questions/14657170/installing-global-npm-dependencies-via-package-json

반응형