> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # CloudflareDeployer `CloudflareDeployer` regroupe votre serveur Mastra et génère un fichier `wrangler.jsonc` conforme à la [configuration Wrangler](https://developers.cloudflare.com/workers/wrangler/configuration/) de Cloudflare. Cloudflare le déploie sous la forme d’un Cloudflare Worker. ## Installation Pour utiliser `CloudflareDeployer`, installez le package `@mastra/deployer-cloudflare` : **npm**: ```bash npm install @mastra/deployer-cloudflare@latest ``` **pnpm**: ```bash pnpm add @mastra/deployer-cloudflare@latest ``` **Yarn**: ```bash yarn add @mastra/deployer-cloudflare@latest ``` **Bun**: ```bash bun add @mastra/deployer-cloudflare@latest ``` ## Exemple d’utilisation Importez `CloudflareDeployer` et définissez-le comme Deployer dans votre configuration Mastra : ```typescript import { Mastra } from '@mastra/core' import { CloudflareDeployer } from '@mastra/deployer-cloudflare' export const mastra = new Mastra({ deployer: new CloudflareDeployer({ name: 'your-project-name', routes: [ { pattern: 'example.com/*', zone_name: 'example.com', custom_domain: true, }, ], vars: { NODE_ENV: 'production', }, d1_databases: [ { binding: 'DB', database_name: 'my-database', database_id: 'd1-database-id', preview_database_id: 'your-preview-database-id', }, ], kv_namespaces: [ { binding: 'CACHE', id: 'kv-namespace-id', }, ], }), }) ``` ## Options du constructeur Le constructeur de `CloudflareDeployer` accepte les mêmes options de configuration que `wrangler.jsonc`. Consultez la [documentation de configuration de Wrangler](https://developers.cloudflare.com/workers/wrangler/configuration/) pour connaître toutes les options disponibles. ## Secrets Les variables d’environnement de votre fichier `.env` ne sont pas écrites dans `wrangler.jsonc`. Cela empêche l’ajout de secrets au système de gestion de versions. Pour rendre les secrets de votre fichier `.env` accessibles à votre Cloudflare Worker, importez-les en tant que [Secrets Cloudflare](https://developers.cloudflare.com/workers/configuration/secrets/) : ```bash npx wrangler secret bulk .env ``` Utilisez `vars` dans le constructeur de `CloudflareDeployer` uniquement pour les valeurs de configuration non sensibles, telles que `NODE_ENV`. ## Sortie de compilation Après l’exécution de `mastra build`, le Deployer génère un fichier `wrangler.jsonc` conforme à la [configuration Wrangler](https://developers.cloudflare.com/workers/wrangler/configuration/) de Cloudflare. Ce fichier pointe vers des fichiers situés dans `.mastra/output` ; vous devez donc exécuter `mastra build` avant de procéder au déploiement avec Wrangler. ## Bindings Cloudflare Lorsque vous utilisez le Deployer Cloudflare, vous pouvez importer des bindings d’exécution depuis `cloudflare:workers` dans votre fichier de configuration Mastra. Mastra préserve automatiquement les imports d’exécution basés sur un protocole, comme `cloudflare:workers`, pendant `mastra build`, sans tenter de les installer en tant que dépendances npm. ```typescript import { env } from 'cloudflare:workers' import { Mastra } from '@mastra/core' import { registerApiRoute } from '@mastra/core/server' import { CloudflareDeployer } from '@mastra/deployer-cloudflare' export const mastra = new Mastra({ deployer: new CloudflareDeployer({ name: 'my-worker', kv_namespaces: [{ binding: 'CACHE', id: 'your-kv-namespace-id' }], }), server: { apiRoutes: [ registerApiRoute('/bindings', { method: 'GET', requiresAuth: false, handler: async c => { await env.CACHE.put('status', 'ok') return c.json({ status: await env.CACHE.get('status') }) }, }), ], }, }) ``` > **Conservez les bindings directement dans new Mastra({...}):** Le plugin Babel de Mastra diffère l’exécution de `new Mastra(...)` afin que `env` soit disponible à ce moment-là. Le code placé en dehors de cet appel est évalué lors du chargement du module, avant que `env` ne soit renseigné. > > ```typescript > // ✅ Works — binding is inside new Mastra(), so it's deferred > export const mastra = new Mastra({ > storage: new D1Store({ binding: env.DB }), > }) > > // ❌ Breaks — env.DB is undefined at module load > const storage = new D1Store({ binding: env.DB }) > export const mastra = new Mastra({ storage }) > ```