종속성과 함께 노드 앱을 패키징하는 방법
종속성
각 노드 앱에는 종속성을 지정하는
package.json
가 있으며 나중에 node_modules
폴더에 설치됩니다.우리 앱은 이러한 종속성의 어떤 버전과도 호환되지 않으므로
package.json
는 Semantic Versioning, (a.k.a. semver)를 사용하여 호환성 범위를 지정합니다.이 버전 관리로 인해
node_modules
콘텐츠를 시스템 전체에 설치하지 않으려면 /usr/lib/<package-name>
폴더 안에 설치해야 합니다. 이를 염두에 두고 패키지를 빌드해야 합니다. 갑시다!이 게시물에서는 PKGBUILD에 대해 webtorrent-cli을 사용하고 feross에 의해 구동됩니다.
패키지 설치
노드 앱에 TypeScript 파일을 Nodejs 호환 JavaScript 코드로 변환하는 것과 같은 빌드 프로세스가 필요하지 않은 경우
build()
에서 이 간단한 PKGBUILD
함수를 사용할 수 있습니다.build() {
cd "$srcdir/$pkgname-$pkgver"
npm install --production
}
devDependencies
에 선언된 package.json
를 설치할 필요가 없으므로 --production
는 이 앱의 패키지 크기를 줄입니다.하지만 빌드 프로세스가 있다면 어떨까요? 그러면 우리의
build()
는 다음과 같이 될 것입니다.build() {
cd "$srcdir/$pkgname-$pkgver"
npm install
npm run build
npm prune --production
}
빌드 프로세스를 완료한 후
devDependencies
명령을 사용하여 npm prune --production
를 제거해야 합니다.노드 모듈 패키징
패키지 내부의
node_modules
폴더와 앱 코드 자체를 복사해야 합니다.package() {
install -dm755 "${pkgdir}/usr/lib/${pkgname}"
cp -a bin node_modules package.json "${pkgdir}/usr/lib/${pkgname}/"
}
💡 팁:
${var}
는 Bash에서 변수$var
를 참조하는 또 다른 방법입니다.포장하기 전에 코드를 확인하십시오
ArchWiki은
check()
기능을 사용할 것을 권장합니다. 이 단계는 build
와 package
사이에 발생하며 현재 플랫폼과의 호환성을 확인하기 위해 테스트를 실행하기에 완벽한 장소입니다.build() {
cd "$srcdir/$pkgname-$pkgver"
npm install
npm run build
}
check() {
cd "$srcdir/$pkgname-$pkgver"
npm test
npm prune --production
}
테스트 라이브러리는 프로덕션 런타임에서 사용되지 않기 때문에 일반적으로
devDepencies
의 package.json
에 있습니다. 따라서 node_modules
대신 check()
단계에서 build()
를 가지치기해야 합니다.nvm을 사용하여 빌드
그리고 오늘의 마지막 이슈는 nvm 입니다. 특정 노드 버전에서 패키지를 빌드해야 하는 경우
nvm
패키지를 사용해야 합니다.우리는 이미 Arch Linux가 롤링 릴리스라는 것을 알고 있으므로 공식nodejs 패키지는 최신 LTS가 아닌 최신 버전입니다.
🧠 노드 팀은 이 버전
current
을 호출하고, 짝수 번호의 메이저 버전은 새로운 메이저 버전이 나타날 때 장기 지원으로 전환됩니다. 현재 current
버전은 14.x
이며 15.0.0
가 current
로 공개 릴리스되면 14.x
가 사용 가능한 최신 LTS가 됩니다.nvm
를 makedepends
로 추가해야 하며, PKGBUILD
에 필요한 노드 버전을 변수로 추가하면 좋습니다._nodeversion=12
makedepends=('npm' 'nvm')
그런 다음
nvm
를 build()
함수에 추가합니다.build() {
source /usr/share/nvm/init-nvm.sh
nvm use ${_nodeversion} || nvm install ${_nodeversion}
cd "$srcdir/$pkgname-$pkgver"
npm install --production
}
여기에 몇 가지가 있습니다. 먼저
init-nvm.sh
함수에 build()
를 로드합니다. 이제 설치된 12.x
버전을 nvm use 12
명령과 함께 사용할 수 있습니다. 노드 v12가 설치되지 않은 경우 nvm install 12
를 사용하여 설치를 진행합니다.끝났다! 패키지를 배송할 수 있습니다. 😁
Reference
이 문제에 관하여(종속성과 함께 노드 앱을 패키징하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cloudx/how-to-package-a-node-app-with-their-dependencies-p4g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)