Especificar versiones de Node.js
El proyecto buildpacks ofrece asistencia para las versiones LTS actuales y activas de Node.js. Hay versiones anteriores de Node.js disponibles, pero es posible que el proyecto no las mantenga activamente.
Estás usando package.json
Puedes especificar la versión de Node.js de tu aplicación durante la implementación configurando el campo engines.node en package.json. Para configurar el paquete de compilación de forma que use la versión más reciente de Node.js v16 al implementar tu aplicación, puedes usar los siguientes valores en tu package.json:
"engines": {
"node": "16.x.x"
}
Estás usando GOOGLE_NODEJS_VERSION
También se puede especificar la versión de Node.js mediante la variable de entorno GOOGLE_NODEJS_VERSION.
Si se definen ambas configuraciones, el valor de GOOGLE_NODEJS_VERSION tiene prioridad sobre la propiedad engines.node. Si no se proporciona ningún valor, se usará la versión LTS más reciente de Node.js.
Para configurar el paquete de compilación para que use Node.js 16 al desplegar tu aplicación, sigue estos pasos:
pack build --builder=gcr.io/buildpacks/builder \
sample-functions-framework-node \
--env GOOGLE_NODEJS_VERSION=16.x.x
También puedes usar un descriptor de proyecto project.toml para codificar la variable de entorno junto con los archivos de tu proyecto. Consulta las instrucciones para compilar la aplicación con variables de entorno.
Consejos
- El campo
engines.nodepuede aceptar una restricción de semver. La biblioteca específica que usamos para los buildpacks de Node.js es Masterminds/semver. - No uses especificadores de mayor que (>) en
engines.node - Al desplegar la aplicación en el entorno estándar de App Engine, la propiedad
engines.nodedebe ser compatible con el tiempo de ejecución especificado enapp.yaml. - Puedes consultar documentación adicional sobre la opción de configuración
engines.nodeenpackage.jsonen la documentación oficial de NPM, en el tema de los motores. - Al desplegar una función en Cloud Run Functions, la propiedad
engines.nodedebe ser compatible con el tiempo de ejecución usado para desplegar la función.
Instalar dependencias
Usar NPM
- NPM es el gestor de paquetes predeterminado.
- Siempre que sea posible, utilice
package-lock.jsonpara mejorar el rendimiento de la caché. - De forma predeterminada, solo se instalan las dependencias de producción.
- Puedes especificar la sección de la versión de npm mediante el campo
engines.npmen el archivopackage.json.
Usar Yarn
- Yarn se usa en su lugar cuando incluye el archivo
yarn.locken su proyecto. - Puedes especificar la versión de Yarn que quieres usar en el campo
engines.yarnde tu archivopackage.json. - Admitimos el modo PnP de Yarn 2 si tu proyecto incluye un
.yarn/cache.
Usar Pnpm
- Pnpm se usa en su lugar cuando incluyes el archivo
pnpm-lock.yamlen tu proyecto. - Puedes especificar una versión de pnpm en el campo
engines.pnpmde tu archivopackage.json. - Para ver un ejemplo práctico, consulta la aplicación sample-node-pnpm.
Usar módulos privados
Puedes usar un módulo npm privado proporcionando la configuración para autenticarte con el registro en un archivo .npmrc del directorio de la función. Si usas Yarn 2 o una versión posterior como gestor de paquetes, este archivo se llama .yarnrc.yml.
Módulos privados de Artifact Registry
Un repositorio de paquetes de Node.js de Artifact Registry
puede alojar módulos privados para tu función. Cuando despliega una función de Buildpacks, el proceso de compilación genera automáticamente credenciales de Artifact Registry para la cuenta de servicio de Cloud Build.
Solo tienes que incluir el repositorio de Artifact Registry en tu archivo .npmrc cuando uses la versión 1 de npm o Yarn. Por ejemplo, si usas NPM o Yarn versión 1:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Si usas Yarn versión 2 o posterior, solo tienes que incluir el repositorio de Artifact Registry en tu archivo .yarnrc.yml sin credenciales adicionales.
Por ejemplo:
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: true
Módulos privados de otros repositorios
En la documentación de npm se explica cómo crear tokens de acceso de solo lectura personalizados. No recomendamos usar el archivo .npmrc creado en el directorio principal porque contiene un token de lectura y escritura. Los permisos de escritura no son necesarios durante la implementación y podrían suponer un riesgo de seguridad.
No incluyas el archivo .npmrc si no usas repositorios privados, ya que puede aumentar el tiempo de implementación de tus funciones.
Formato de archivo
Si usas un archivo .npmrc para definir un token de autenticación personalizado, debe incluir la línea que se muestra a continuación.
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
Sustituye:
- REGISTRY_DOMAIN: el nombre de dominio de tu registro privado de npm. Por ejemplo, si el host de tu repositorio es
npmjs.org, asigna el valorregistry.npmjs.orga este campo. AUTH_TOKEN: el token de autorización de tu registro de npm. Puede ser el valor de texto literal del token o la cadena de texto
${NPM_TOKEN}, que el comandonpmsustituye por el valor del token real del entorno.Puedes definir la variable de entorno
$NPM_TOKENcon el argumento--set-build-env-varsdel comandogcloud functions deploy. Para obtener más información sobre el token de autenticación de NPM, consulta el tutorial de NPM sobre módulos privados.
Ejecutar pasos de compilación personalizados durante la implementación
De forma predeterminada, npm run build se ejecuta si se especifica una secuencia de comandos en el archivo package.json. Sin embargo, puedes especificar pasos de compilación personalizados para anular el comportamiento predeterminado y ejecutar solo las secuencias de comandos que quieras durante la compilación. Puedes controlar los pasos de compilación mediante la variable de entorno GOOGLE_NODE_RUN_SCRIPTS o gcp-build en el archivo package.json.
Solo puedes usar un método. Ten en cuenta que la variable de entorno GOOGLE_NODE_RUN_SCRIPTS tiene prioridad y anula cualquier valor que se haya especificado para gcp-build en tu package.json.
De forma predeterminada, cuando configuras pasos de compilación personalizados, se instalan primero dependencies y devDependencies en el archivo package.json antes de que se ejecuten secuencias de comandos o comandos. Para anular el comportamiento predeterminado, puedes usar la variable de entorno NODE_ENV.
Estás usando GOOGLE_NODE_RUN_SCRIPTS
Puedes transferir la variable de entorno GOOGLE_NODE_RUN_SCRIPTS a la compilación para controlar qué secuencias de comandos se ejecutan. Puedes especificar uno o varios scripts o, en su lugar, pasar una variable de entorno vacía para evitar que se ejecute el comportamiento predeterminado, como GOOGLE_NODE_RUN_SCRIPTS=. Para obtener más información, consulta el artículo sobre variables de entorno.
Estás usando package.json
Si añades gcp-build en tu archivo package.json, solo se ejecutará npm run gcp-build, lo que significa que se anulará el comportamiento predeterminado. Puede especificar uno o varios comandos, o bien una cadena vacía para evitar que se ejecute ningún comando, como "gcp-build":"".
"scripts": {
...
"gcp-build": "npm run lint && npm run build"
...
}
Punto de entrada de la aplicación
El buildpack de Node.js ejecutará el comando especificado en el campo scripts.start de tu package.json.
Si no se define scripts.start, el paquete de compilación ejecutará npm start.
Te recomendamos que uses un Procfile porque elimina npm o yarn de la ruta.
Variables de entorno
Puedes definir variables de entorno para configurar las compilaciones de tu imagen de contenedor.
El paquete de compilación de Node.js admite las siguientes variables de entorno para personalizar tu contenedor.
NPM_CONFIG_<key>
Consulta la documentación.
Ejemplo: NPM_CONFIG_FLAG=value pasa -flag=value a los comandos de npm.
NODE_ENV
Especifica el entorno de desarrollo durante la compilación. Se ha definido como npm install.
Ejemplo: NODE_ENV=development instala tanto dependencies como devDependencies, que se especifican en package.json.
GOOGLE_NODE_RUN_SCRIPTS
Especifica una lista ordenada de secuencias de comandos de npm de package.json que se ejecutarán después de instalar las dependencias. La lista debe estar separada por comas y se ejecuta en el orden en el que se enumeran las secuencias de comandos.
Si especifica GOOGLE_NODE_RUN_SCRIPTS, solo se ejecutarán las secuencias de comandos que incluya en la lista. Por ejemplo, si quieres evitar que se ejecute el valor predeterminado npm run build, especifica la variable de entorno sin ningún valor.
Ejemplos:
GOOGLE_NODE_RUN_SCRIPTS=lint,buildse ejecutanpm run linty, a continuación,npm run build.GOOGLE_NODE_RUN_SCRIPTS=no ejecuta ninguna secuencia de comandos.