Especifica versiones de Node.js
El proyecto de paquetes de compilación proporciona compatibilidad con las versiones LTS actuales y activas de Node.js. Las versiones anteriores de Node.js están disponibles, pero es posible que el proyecto no las mantenga activamente.
Usa package.json
Puedes especificar la versión de Node.js de tu aplicación durante la implementación si configuras el campo engines.node
en package.json
. A fin de configurar el paquete de compilación para que use la versión más reciente de Node.js v16 cuando implementes tu app, puedes usar los siguientes valores en tu package.json
:
"engines": {
"node": "16.x.x"
}
Usa GOOGLE_NODEJS_VERSION
También es posible especificar la versión de Node.js a través de la variable de entorno GOOGLE_NODEJS_VERSION
.
Si ambas configuraciones se establecen, el valor GOOGLE_NODEJS_VERSION
tiene prioridad sobre la propiedad engines.node
. Si no se proporciona ningún valor, se usa la versión más reciente de LTS de Node.js.
A fin de configurar el paquete de compilación para que use Node.js 16 cuando implementes tu app, haz lo siguiente:
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 proyectos 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.
Sugerencias
- El campo
engines.node
puede tomar una restricción semver. La biblioteca específica que usamos para los paquetes de compilación de Node.js es Masterminds/semver - Evita usar especificadores mayores que (>) en
engines.node
- Cuando implementas la aplicación en el entorno estándar de App Engine, la propiedad
engines.node
debe ser compatible con el entorno de ejecución especificado enapp.yaml
. - Puedes encontrar documentación adicional sobre la opción de configuración
engines.node
enpackage.json
en la documentación oficial de NPM en el tema motores - Cuando implementas una función en las funciones de Cloud Run, la propiedad
engines.node
debe ser compatible con el entorno de ejecución que se usa para implementar la función.
Instala dependencias
Utiliza NPM
- NPM es el administrador de paquetes predeterminado.
- Siempre que sea posible, usa
package-lock.json
para 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 la Administración de socios de red mediante el campo
engines.npm
en el archivopackage.json
.
Utiliza Yarn
- En su lugar, se usa Yarn cuando incluyes el archivo
yarn.lock
en tu proyecto. - Puedes especificar la versión de yarn para usar en el campo
engines.yarn
del archivopackage.json
. - Admitimos el modo PrnP de Yarn2 si tu proyecto incluye una
.yarn/cache
.
Usa Pnpm
- Pnpm se usa en su lugar cuando incluyes el archivo
pnpm-lock.yaml
en el proyecto. - Puedes especificar una versión de pnpm en el campo
engines.pnpm
del archivopackage.json
. - Para ver un ejemplo funcional, consulta la app de sample-node-pnpm.
Usa módulos privados
Puedes usar un módulo de npm privado si proporcionas la configuración para autenticarte con el registro en un archivo .npmrc
en el directorio de la función. Si usas Yarn versión 2 o una versión posterior como administrador de paquetes, este archivo se llamará .yarnrc.yml
.
Módulos privados de Artifact Registry
Un repositorio de paquetes de Node.js en Artifact Registry puede alojar módulos privados para tu función. Cuando implementas una función de Buildpacks, el proceso de compilación genera de forma automática las credenciales de Artifact Registry para la cuenta de servicio de Cloud Build.
Solo necesitas enumerar el repositorio de Artifact Registry en tu archivo .npmrc
cuando uses NPM o Yarn versión 1. Por ejemplo, cuando 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 una versión posterior, solo debes enumerar 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 tus propios tokens de acceso de solo lectura. No recomendamos el uso del archivo .npmrc
que se creó en el directorio principal porque contiene un token de lectura/escritura. No se necesitan permisos de escritura para el proceso de implementación. Además, podrían poner en riesgo la 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, el archivo debe incluir la línea que se muestra a continuación.
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
Reemplaza lo siguiente:
- REGISTRY_DOMAIN es el nombre de dominio de tu registro privado de npm. Por ejemplo, si el host del repositorio es
npmjs.org
, establece este campo enregistry.npmjs.org
. AUTH_TOKEN: es el token de autorización para tu registro de npm. Puede ser el valor de texto literal del token o la cadena de texto
${NPM_TOKEN}
, que el comandonpm
reemplaza por el valor del token real del entorno.Puedes establecer la variable de entorno
$NPM_TOKEN
con el argumento--set-build-env-vars
en el comandogcloud functions deploy
. Consulta el instructivo de NPM sobre los módulos privados para obtener más información sobre el token de autenticación de NPM.
Ejecuta pasos de compilación personalizados durante la implementación
De forma predeterminada, se ejecuta npm run build
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 deseas durante la compilación. Puedes controlar los pasos de compilación mediante la variable de entorno GOOGLE_NODE_RUN_SCRIPTS
o el 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 todo lo que se especifique para gcp-build
en tu package.json
.
De forma predeterminada, cuando configuras los pasos de compilación personalizados, las dependencies
y devDependencies
en tu archivo package.json
se instalan primero antes de que se ejecuten cualquier secuencia de comandos o comandos. Para anular el comportamiento predeterminado, puedes usar la variable de entorno NODE_ENV
.
Usa GOOGLE_NODE_RUN_SCRIPTS
Puedes pasar la variable de entorno GOOGLE_NODE_RUN_SCRIPTS
a la compilación para controlar qué secuencias de comandos se ejecutan. Puedes especificar una o más secuencias de comandos 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 detalles completos, consulta Variables de entorno.
Usa package.json
Agregar gcp-build
en tu archivo package.json
solo ejecuta npm run gcp-build
, lo que significa que anula el comportamiento predeterminado. Puedes especificar uno o más comandos, o una string vacía para evitar que se ejecute cualquier comando, como "gcp-build":""
.
"scripts": {
...
"gcp-build": "npm run lint && npm run build"
...
}
Punto de entrada de la aplicación
El paquete de compilación de Node.js ejecutará el comando especificado en el campo scripts.start
de tu package.json
.
Si no se establece scripts.start
, el paquete de compilación ejecutará npm start
.
Recomendamos usar un Procfile, ya que quita npm
o yarn
de la ruta.
Variables de entorno
Puedes establecer variables de entorno para configurar compilaciones de la imagen de contenedor.
El paquete de compilación de Node.js admite las siguientes variables de entorno para personalizar tu contenedor.
NPM_CONFIG_<key>
Ver la documentación.
Ejemplo: NPM_CONFIG_FLAG=value
pasa los comandos -flag=value
a npm
.
NODE_ENV
Especifica el entorno de desarrollo durante la compilación; configurado para npm install
.
Ejemplo: NODE_ENV=development
instala dependencies
y devDependencies
especificados en package.json
.
GOOGLE_NODE_RUN_SCRIPTS
Especifica una lista ordenada de secuencias de comandos de la Administración de socios de red de package.json
para que se ejecuten después de instalar dependencias. La lista debe estar separada por comas y se ejecuta en el orden en que enumeras cada secuencia de comandos.
Cuando especificas GOOGLE_NODE_RUN_SCRIPTS
, solo se ejecutan las secuencias de comandos que enumeras. Por ejemplo, si deseas evitar que se ejecute el npm run build
predeterminado, debes especificar la variable de entorno sin un valor.
Ejemplos:
GOOGLE_NODE_RUN_SCRIPTS=lint,build
ejecutanpm run lint
y, luego,npm run build
.GOOGLE_NODE_RUN_SCRIPTS=
no ejecuta secuencias de comandos.