How to access NPM Private Registry

หลังจากที่ ได้ปรับตัว Nexus ให้เป็นทั้ง Host และ Proxy ของตัว NPM ในบริษัทไปแล้วตาม How to Access npm Packages After Securing Nexus Repository Manager (sonatype.com)

ต่อไป คือ การกำหนดในตัว NPM ใส่ตัว Credential เวลาใช้งานครับ โดยมีรูปแบบ ดังนี้

npm login --registry=<<YOUR REGISTRY URL>> --auth-type=legacy

NOTE: บางทีที่ยังใช้งาน Username + Password ต้องเพิ่ม --auth-type=legacy

ตัวอย่าง เช่น

npm login --registry=http://dev.local:8081/repository/npm-group/

> Username: <ENTER YOUR USERNAME>
> Password: <ENTER YOUR PASSWORD / SECRET / TOKEN)
> Email: <ENTER YOUR PUBLIC-EMAIL-ADDRESS>

หลังจากมันจะถาม username / password (บาง Registry เรียกว่า Secret หรือ Token) / public email ก็กรอกข้อมูลไปครับ

สุดท้าย มันจะเอา Config ที่เราใส่ไปเก็บที่ Path $HOME ของแต่ละ user ครับ

  • Windows: C:\Users\<<YourUserName>>
  • Linux: /home/<<YourUserName>>

ข้อมูลที่เรากรอกไปทั้ง Registry + Credential จะถูกแปลงให้จัดเก็บในไฟล์ .npmrc ตามรูปครับ

กรณีที่ต้องการให้มันดึงเฉพาะบาง package เช่น เอาเฉพาะขององค์กร (scope)

  • กรณีที่ต้องการให้มันดึงเฉพาะบาง package จาก registry ที่สนใจ เช่น package ที่ขึ้นต้นด้วย dscomjs
npm login --registry=http://dev.local:8081/repository/npm-group/ --scope=@dscomjs

> Username: <ENTER YOUR USERNAME>
> Password: <ENTER YOUR PASSWORD / SECRET / TOKEN)
> Email: <ENTER YOUR PUBLIC-EMAIL-ADDRESS>
  • ถ้ามีหลาย scope login ไปหลายๆรอบครับ
npm login --registry=http://dev.local:8081/repository/npm-group/ --scope=@dscomjs
...
npm login --registry=http://dev.local:8081/repository/npm-group/ --scope=@dscomts
...
  • อ๋อนอกจาก npm login แล้ว ถ้า repository เปิด public npm config ได้เลย
npm config set @dscomjs:registry=http://dev.local:8081/repository/npm-group/
npm config set @dscomts:registry=http://dev.local:8081/repository/npm-group/

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.