Creazione di un'applicazione Node.js

Specifica le versioni di Node.js

Il progetto buildpacks fornisce supporto per le release LTS correnti e attive di Node.js. Sono disponibili versioni precedenti di Node.js, ma potrebbero non essere gestite attivamente dal progetto.

Uso: package.json

Puoi specificare la versione Node.js della tua applicazione durante il deployment configurando il campo engines.node in package.json. Per configurare il buildpack in modo che utilizzi la versione più recente di Node.js v16 durante il deployment della tua app, puoi utilizzare i seguenti valori in package.json:

"engines": {
  "node": "16.x.x"
}

Uso: GOOGLE_NODEJS_VERSION

È anche possibile specificare la versione Node.js tramite la variabile di ambiente GOOGLE_NODEJS_VERSION. Se sono impostate entrambe le configurazioni, il valore GOOGLE_NODEJS_VERSION ha la precedenza. rispetto alla proprietà engines.node. Se non viene fornito alcun valore, viene utilizzata la versione LTS più recente di Node.js

Per configurare il buildpack in modo che utilizzi Node.js 16 durante il deployment della tua app:

pack build --builder=gcr.io/buildpacks/builder \
   sample-functions-framework-node \
   --env GOOGLE_NODEJS_VERSION=16.x.x

Puoi anche utilizzare un descrittore di progetto project.toml per codificare la variabile di ambiente insieme ai file di progetto. Vedi le istruzioni su creando l'applicazione con le variabili di ambiente.

Suggerimenti

  • Il campo engines.node può avere un vincolo di semver. La libreria specifica che utilizziamo per i buildpack Node.js è Masterminds/semver
  • Evita di utilizzare identificatori maggiori di (>) in engines.node
  • Quando esegui il deployment dell'applicazione nell'ambiente standard di App Engine, la proprietà engines.node deve essere compatibile con il runtime specificato in app.yaml
  • Documentazione aggiuntiva sull'opzione di configurazione engines.node in package.json è disponibile nella documentazione ufficiale di Gestione dei partner di rete nell'argomento motori
  • Quando esegui il deployment di una funzione su funzioni Cloud Run, la proprietà engines.node deve essere compatibile con il runtime utilizzato per eseguire il deployment della funzione

Installazione delle dipendenze

Utilizzo della gestione dei partner di rete

  • Gestione dei pacchetti predefinita è il gestore di pacchetti predefinito.
  • Quando possibile, utilizza package-lock.json per migliorare le prestazioni della cache.
  • Per impostazione predefinita sono installate solo le dipendenze di produzione.
  • Puoi specificare la sezione della versione npm utilizzando il campo engines.npm in package.json file.

Utilizzo del filato

  • Viene invece utilizzato il Yarn quando includi il file yarn.lock nel tuo progetto.
  • Puoi specificare la versione del filato da utilizzare nel campo engines.yarn del tuo package.json file.
  • Supportiamo la modalità PnP di Yarn2 se il tuo progetto include un .yarn/cache.

Utilizzo di Pnpm

  • Quando includi il file pnpm-lock.yaml nella cartella , viene utilizzato Pnpm progetto.
  • Puoi specificare una versione di pnpm nel campo engines.pnpm del tuo package.json file.
  • Per un esempio pratico, vedi sample-node-pnpm dell'app.

Utilizzo dei moduli privati

Puoi utilizzare un modulo di gestione dei partner privato fornendo le impostazioni per l'autenticazione con al registro in un file .npmrc nella directory della funzione. Se utilizzi Yarn versione 2 o successiva come gestore di pacchetti, questo file è denominato .yarnrc.yml.

Moduli privati da Artifact Registry

Un repository di pacchetti Node.js di Artifact Registry puoi ospitare moduli privati per la tua funzione. Quando esegui il deployment di , il processo di compilazione genera automaticamente le credenziali Artifact Registry per l'account di servizio Cloud Build. Devi solo elencare il repository Artifact Registry nel file .npmrc quando si utilizza Gestione dei partner di rete o Yarn versione 1. Ad esempio, se utilizzi NPM o Yarn versione 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

Se utilizzi Yarn versione 2 o successiva, devi elencare solo Artifact Registry repository nel tuo file .yarnrc.yml senza credenziali aggiuntive. Ad esempio:

npmScopes:
  SCOPE:
    npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
    npmAlwaysAuth: true

Moduli privati da altri repository

La documentazione npm spiega come creare impostazioni di sola lettura personalizzate. di accesso ai token di accesso. È sconsigliato utilizzare il file .npmrc creato in casa perché contiene un token di lettura/scrittura. Le autorizzazioni di scrittura non sono necessarie durante il deployment e potrebbe rappresentare un rischio per la sicurezza.

Non includere il file .npmrc se non utilizzi repository privati. in quanto possono aumentare i tempi di deployment delle tue funzioni.

Formato file

Se utilizzi un file .npmrc per impostare un token di autenticazione personalizzato, questo dovrebbe includere la riga mostrata di seguito.

//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN

Sostituisci:

  • REGISTRY_DOMAIN: il nome di dominio del tuo dominio npm. Ad esempio, se l'host del repository è npmjs.org, imposta questo campo a registry.npmjs.org.
  • AUTH_TOKEN: il token di autorizzazione per il registro npm. Può essere il valore di testo letterale del token o la stringa di testo ${NPM_TOKEN}, che il comando npm sostituisce con il valore effettivo del token indicato nella completamente gestito di Google Cloud.

    Puoi impostare la variabile di ambiente $NPM_TOKEN con --set-build-env-vars all'argomento Comando gcloud functions deploy. Consulta il tutorial sulla gestione dei partner di rete sui moduli privati per maggiori dettagli sul token di autenticazione NPM.

Esecuzione di passaggi di build personalizzati durante il deployment

Per impostazione predefinita, npm run build viene eseguito se viene specificato uno script nel package.json file. Tuttavia, puoi specificare passi di build personalizzati il comportamento predefinito ed eseguire solo gli script desiderati durante la creazione. Puoi controllare i passaggi di build utilizzando GOOGLE_NODE_RUN_SCRIPTS o gcp-build nel tuo package.json file.

Puoi utilizzare un solo metodo. Tieni presente che GOOGLE_NODE_RUN_SCRIPTS di una variabile di ambiente ha la precedenza e sostituisce qualsiasi elemento specificato per gcp-build in package.json.

Per impostazione predefinita, quando configuri i passi di build personalizzati, sia dependencies Devi installare prima devDependencies nel file package.json prima dell'esecuzione di qualsiasi script o comando. Per eseguire l'override del comportamento predefinito, puoi utilizzare la variabile di ambiente NODE_ENV.

Uso: GOOGLE_NODE_RUN_SCRIPTS

Puoi passare la variabile di ambiente GOOGLE_NODE_RUN_SCRIPTS alla build controllare quali script vengono eseguiti. Puoi specificare uno o più script oppure passa una variabile di ambiente vuota per impedire che il comportamento predefinito in esecuzione, ad esempio GOOGLE_NODE_RUN_SCRIPTS=. Per i dettagli completi, vedi Variabili di ambiente.

Uso: package.json

L'aggiunta di gcp-build al file package.json viene eseguita solo npm run gcp-build, che sostituisce il valore predefinito comportamento degli utenti. Puoi specificare uno o più comandi oppure specificare stringa vuota per impedire l'esecuzione di qualsiasi comando, come "gcp-build":"".

"scripts": {
  ...
  "gcp-build": "npm run lint && npm run build"
  ...
}

Punto di ingresso dell'applicazione

Il buildpack Node.js eseguirà il comando specificato nel campo scripts.start di package.json. Se scripts.start non è impostato, il buildpack eseguirà npm start.

Ti consigliamo di utilizzare un Procfile perché rimuove npm o yarn dal percorso.

Variabili di ambiente

Puoi impostare le variabili di ambiente per configurare le build dell'immagine container.

Il buildpack Node.js supporta il seguente ambiente per personalizzare il contenitore.

NPM_CONFIG_<key>

Consulta la documentazione.

Esempio: NPM_CONFIG_FLAG=value trasmette -flag=value ai comandi npm.

NODE_ENV

Specifica l'ambiente di sviluppo durante la creazione. impostato per npm install.

Esempio: NODE_ENV=development installa sia dependencies sia devDependencies specificati in package.json.

GOOGLE_NODE_RUN_SCRIPTS

Specifica un elenco ordinato di script npm da package.json da eseguire dopo installare le dipendenze. L'elenco deve essere separato da virgole e viene eseguito nell'ordine elencare ogni script.

Se specifichi GOOGLE_NODE_RUN_SCRIPTS, vengono visualizzati solo gli script da te elencati vengono eseguiti tutti i test delle unità. Ad esempio, se vuoi impedire al valore predefinito npm run build di è in esecuzione, specifichi la variabile di ambiente senza un valore.

Esempi:

  • GOOGLE_NODE_RUN_SCRIPTS=lint,build esegue npm run lint e poi npm run build.
  • GOOGLE_NODE_RUN_SCRIPTS= non esegue script.