หลังจากที่ ได้ปรับตัว 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
- npm-login | npm Docs (npmjs.com)
- node.js - Login to npm with multiple scopes - Stack Overflow
- scope | npm Docs (npmjs.com)
- Working with the npm registry - GitHub Docs
- scope | npm Docs (npmjs.com)
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.