Binary Coffee

Aprende a publicar tu paquete NPM en AWS Code Artifact 🚧

javascript

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:

  • Tener una cuanta de AWS
  • Tener instalado aws-cli, preferentemente una versión superior a la 2.0.54

Recuerda configurar tu cliente de aws ejecutando aws configure.

Creando el repositorio en Code Artifact

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"" "[]"
    }
}

Publicar paquete npm en Code Artifact

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.

Ahora a instalar

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.

Permitir instalación de paquetes externos

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

📋 Documentación

Opiniones