AWS Code Artifact aplica una capa adicional de seguridad para los repositorios privados de una organización. ¿Permite hacerlo a la manera simple? Pues sí y además puedes crear repositorios sobre Pypi, Maven, Nuget, Gradle, Npm entre otros.
Para poder publicar nuestro paquete npm necesitamos tener dos cosas antes:
Recuerda configurar tu cliente de aws ejecutando aws configure
.
Para crear el repo tenemos varias opciones que nos enseña Amazon en su documentación, yo me voy por la versión de la consola.
aws codeartifact create-repository --domain my-domain --domain-owner domain-owner-id --repository my-repo --description "My new repository"
Si el comando anterior da como salida lo siguiente es que se creó correctamente:
{
"repository": {
"name": "my-repo",
"administratorAccount": "123456789012
"domainName": "my-domain",
"domainOwner": "123456789012",
"arn": "arn:aws:codeartifact:region-id:123456789012:repository/my-domain/my-repo",
"description": "My new repository",
"upstreams": "[]",
"externalConnections"" "[]"
}
}
Ahora solo debemos asegurarnos de que tener un index.js
donde se exporten los componentes o métodos que queremos tenga nuestra librería. Pero eso seguro ya lo tienes, así que vamos a la parte final.
En nuestro package.json
debemos agregar las siguientes líneas:
"scripts": {
...
"prepare": "yarn co:login",
"co:login": "aws codeartifact login --tool npm --repository repo --domain domain --domain-owner domain-owner"
}
🥳 Luego solo es ejecutar npm publish
y ya tendrás tu paquete npm en Code Artifact.
A la hora de instalar nuestro paquete en un nuevo proyecto es necesario tener las mismas líneas anteriores en el package.json
.
"scripts": {
...
"prepare": "yarn co:login",
"co:login": "aws codeartifact login --tool npm --repository repo --domain domain --domain-owner domain-owner"
}
Una vez agregadas simplemente corremos npm install repo_name
.
A la hora de usar este package en otro proyecto tratará de instalar todas las dependencias del mismo desde Aws Codeartifact, y en teoría solo queremos que instale nuestro paquete npm. Ahora como lo hacemos, nuevamente es súper sencillo, ejecutamos en la consola:
aws codeartifact associate-external-connection --external-connection public:npmjs --domain my-domain --domain-owner domain-owner-id --repository my-repo