Spécifier les versions de Node.js
Le projet des packs de création est compatible avec la version LTS actuelle et la version LTS active de Node.js. D'anciennes versions de Node.js sont disponibles, mais peuvent ne pas être gérées activement par le projet.
À l'aide de package.json
Vous pouvez spécifier la version de Node.js de votre application lors du déploiement en configurant le champ engines.node dans package.json. Pour configurer le pack de création de manière à utiliser la dernière version de Node.js v16 lors du déploiement de votre application, vous pouvez utiliser les valeurs suivantes dans votre fichier package.json :
"engines": {
"node": "16.x.x"
}
À l'aide de GOOGLE_NODEJS_VERSION
Il est également possible de spécifier la version de Node.js via la variable d'environnement GOOGLE_NODEJS_VERSION.
Si les deux options sont spécifiées, la valeur de GOOGLE_NODEJS_VERSION est prioritaire sur le fichier engines.node. Si aucune valeur n'est fournie, la version LTS la plus récente de Node.js est utilisée.
Pour configurer le buildpack afin d'utiliser Node.js 16 lors du déploiement de votre application, procédez comme suit :
pack build --builder=gcr.io/buildpacks/builder \
sample-functions-framework-node \
--env GOOGLE_NODEJS_VERSION=16.x.x
Vous pouvez également utiliser un descripteur de projet project.toml pour encoder la variable d'environnement avec vos fichiers de projet. Consultez les instructions décrivant la compilation de l'application avec des variables d'environnement.
Conseils
- Le champ
engines.nodepeut accepter une contrainte semver. La bibliothèque spécifique que nous utilisons pour les buildpacks Node.js est Masterminds/semver. - Évitez d'utiliser les spécificateurs "plus de" (>) dans
engines.node. - Lors du déploiement de l'application dans l'environnement standard App Engine, la propriété
engines.nodedoit être compatible avec l'environnement d'exécution spécifié dansapp.yaml. - Vous trouverez des informations supplémentaires sur l'option de configuration
engines.nodedanspackage.jsonen consultant la section sur les moteurs de la documentation officielle de NPM. - Lorsque vous déployez une fonction sur la solution des fonctions Cloud Run, la propriété
engines.nodedoit être compatible avec l'environnement d'exécution utilisé pour déployer votre fonction.
Installer les dépendances
Avec NPM
- NPM est le gestionnaire de packages par défaut.
- Dans la mesure du possible, utilisez
package-lock.jsonpour améliorer les performances du cache. - Par défaut, seules les dépendances de production sont installées.
- Vous pouvez spécifier la section de version npm à l'aide du champ
engines.npmde votre fichierpackage.json.
Avec Yarn
- Le fichier Yarn est utilisé lorsque vous incluez le fichier
yarn.lockdans votre projet. - Vous pouvez spécifier la version de yarn à utiliser dans le champ
engines.yarnde votre fichierpackage.json. - Nous prenons en charge le mode Yarn2 PnP si votre projet inclut un
.yarn/cache.
Avec Pnpm
- Pnpm est utilisé à la place lorsque vous incluez le fichier
pnpm-lock.yamldans votre projet. - Vous pouvez spécifier une version de pnpm dans le champ
engines.pnpmde votre fichierpackage.json. - Pour obtenir un exemple fonctionnel, consultez l'application sample-node-pnpm.
Utiliser des modules privés
Vous pouvez utiliser un module npm privé en fournissant des paramètres d'authentification avec le registre dans un fichier .npmrc du répertoire de la fonction. Si vous utilisez comme gestionnaire de paquets Yarn v2 ou une version ultérieure, ce fichier est nommé .yarnrc.yml.
Modules privés d'Artifact Registry
Un dépôt de packages Node.js Artifact Registry peut héberger des modules privés pour votre fonction. Lorsque vous déployez une fonction Buildpacks, le processus de compilation génère automatiquement des identifiants Artifact Registry pour le compte de service Cloud Build.
Vous ne devez répertorier le dépôt Artifact Registry que dans votre fichier .npmrc lorsque vous utilisez NPM ou Yarn version 1. Par exemple, lorsque vous utilisez NPM ou Yarn version 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 vous utilisez Yarn version 2 ou une version ultérieure, il vous suffit de répertorier le dépôt Artifact Registry dans votre fichier .yarnrc.yml sans identifiants supplémentaires.
Exemple :
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: true
Modules privés d'autres dépôts
La documentation npm explique comment créer des jetons d'accès personnalisés en lecture seule. Nous déconseillons l'utilisation du fichier .npmrc créé dans le répertoire d'accueil, car il contient un jeton de lecture/écriture. Les autorisations d'écriture ne sont pas requises pendant le déploiement et peuvent présenter un risque pour la sécurité.
N'incluez pas le fichier .npmrc si vous n'utilisez pas de dépôts privés, car cela peut augmenter le temps de déploiement de vos fonctions.
Format de fichier
Si vous utilisez un fichier .npmrc pour définir un jeton d'authentification personnalisé, il doit inclure la ligne ci-dessous.
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
Remplacez :
- REGISTRY_DOMAIN : le nom de domaine de votre registre npm privé. Par exemple, si l'hôte de votre dépôt est
npmjs.org, définissez ce champ surregistry.npmjs.org. AUTH_TOKEN : jeton d'autorisation de votre registre npm. Il peut s'agir de la valeur de texte littéral du jeton, ou de la chaîne de texte
${NPM_TOKEN}, que la commandenpmremplace par la valeur réelle du jeton, fournie par l'environnement.Vous pouvez définir la variable d'environnement
$NPM_TOKENavec l'argument--set-build-env-varssur votre commandegcloud functions deploy. Pour en savoir plus sur le jeton d'authentification NPM, consultez le tutoriel NPM sur les modules privés.
Exécuter les étapes de compilation personnalisée lors du déploiement
Par défaut, npm run build est exécuté si un script est spécifié dans votre fichier package.json. Toutefois, vous pouvez plutôt spécifier des étapes de compilation personnalisées pour remplacer le comportement par défaut et n'exécuter que les scripts souhaités lors de la compilation. Vous pouvez contrôler les étapes de compilation à l'aide de la variable d'environnement GOOGLE_NODE_RUN_SCRIPTS ou de gcp-build dans votre fichier package.json.
Vous ne pouvez utiliser qu'une seule méthode. Notez que la variable d'environnement GOOGLE_NODE_RUN_SCRIPTS est prioritaire et remplace tout ce qui est spécifié pour gcp-build dans votre package.json.
Par défaut, lorsque vous configurez des étapes de compilation personnalisées, les dependencies et devDependencies de votre fichier package.json sont installés en premier avant l'exécution des scripts ou des commandes. Pour remplacer le comportement par défaut, vous pouvez utiliser la variable d'environnement NODE_ENV.
À l'aide de GOOGLE_NODE_RUN_SCRIPTS
Vous pouvez transmettre la variable d'environnement GOOGLE_NODE_RUN_SCRIPTS à la compilation pour contrôler les scripts à exécuter. Vous pouvez spécifier un ou plusieurs scripts ou transmettre à la place une variable d'environnement vide pour empêcher le comportement par défaut, tel que GOOGLE_NODE_RUN_SCRIPTS=. Pour plus d'informations, consultez la section Variables d'environnement.
À l'aide de package.json
L'ajout de gcp-build dans votre fichier package.json n'exécute que npm run gcp-build, ce qui signifie qu'il remplace le comportement par défaut. Vous pouvez spécifier une ou plusieurs commandes, ou spécifier à la place une chaîne vide pour empêcher l'exécution d'une commande, par exemple "gcp-build":"".
"scripts": {
...
"gcp-build": "npm run lint && npm run build"
...
}
Point d'entrée de l'application
Le buildpack Node.js exécute la commande spécifiée dans le champ scripts.start de votre package.json.
Si scripts.start n'est pas défini, le buildpack exécutera npm start.
Nous vous recommandons d'utiliser un fichier Procfile, car il exclut npm ou yarn.
Variables d'environnement
Vous pouvez définir des variables d'environnement pour configurer des compilations de votre image de conteneur.
Le buildpack Node.js est compatible avec les variables d'environnement suivantes pour personnaliser votre conteneur.
NPM_CONFIG_<key>
Consultez la documentation.
Exemple : NPM_CONFIG_FLAG=value transmet -flag=value aux commandes npm.
NODE_ENV
Spécifie l'environnement de développement pendant la compilation ; défini pour npm install
Exemple : NODE_ENV=development installe à la fois les dependencies et devDependencies spécifiés dans package.json.
GOOGLE_NODE_RUN_SCRIPTS
Spécifie une liste numérotée de scripts npm provenant de package.json à exécuter après l'installation de dépendances. Cette liste doit être séparée par une virgule et s'exécute dans l'ordre dans lequel vous répertoriez chaque script.
Lorsque vous spécifiez GOOGLE_NODE_RUN_SCRIPTS, seuls les scripts que vous répertoriez sont exécutés. Par exemple, si vous souhaitez empêcher l'exécution de la valeur npm run build par défaut, vous pouvez spécifier la variable d'environnement sans valeur.
Exemples :
GOOGLE_NODE_RUN_SCRIPTS=lint,buildexécutenpm run lint, puisnpm run build.GOOGLE_NODE_RUN_SCRIPTS=n'exécute aucun script.