INTEGRITY Dokumentace

Bundling

Ve výchozím nastavení Wrangler sloučí kód vašeho Workeru pomocí esbuild. To znamená, že Wrangler má vestavěnou podporu pro import modulů z npm definované ve vašem package.json. Chcete-li zkontrolovat přesný kód, který Wrangler nahraje do Cloudflare, spusťte npx wrangler deploy --dry-run --outdir dist, který zobrazí kód vašeho Workeru po zabalení Wranglerem.

esbuild verze

Wrangler používá esbuild. Pravidelně aktualizujeme esbuild verze dodávaná s Wrangler a od esbuild je nástroj s verzí nižší než 1.0.0, proto mohou tyto změny občas zahrnovat i změny narušující zpětnou kompatibilitu ve způsobu fungování bundlování. Zejména můžeme zvýšit esbuild verze ve vedlejší verzi (minor) Wrangler.

Včetně modulů jiných než JavaScript

Bundling kódu vašeho Workeru vezme více modulů a sloučí je do jednoho souboru. Někdy můžete mít moduly, které nelze vložit přímo do balíčku. Například místo sloučení souboru Wasm do vašeho JavaScript Workeru budete chtít nahrát soubor Wasm jako samostatný modul, který lze importovat za běhu. Wrangler to ve výchozím nastavení podporuje pro následující typy souborů:

Přípona modulu Importovaný typ
.txt string
.html string
.sql string
.bin ArrayBuffer
.wasm, .wasm?module WebAssembly.Module

Viz Konfigurace bundlingu pro přizpůsobení těchto typů souborů.

Například s tímto importem text bude řetězec obsahující obsah example.txt:

import text from "./example.txt";

Na tomto principu funguje také import Wasm, jak ukazuje následující příklad:

import wasm from "./example.wasm";

// Instantiate Wasm modules in the module scope
const instance = await WebAssembly.instantiate(wasm);

export default {
	fetch() {
		const result = instance.exports.exported_func();

		return new Response(result);
	},
};

Najděte další moduly

Nastavením find_additional_modules na true ve vašem konfiguračním souboru, Wrangler projde strom souborů pod base_dir. Všechny soubory, které odpovídají rules definujete, budou v nasazeném Workeru zahrnuty také jako nezabalené externí moduly.

Tento přístup je užitečný pro podporu líného načítání (lazy loading) velkých nebo dynamicky importovaných souborů JavaScript:

NODE_ENV

process.env.NODE_ENV je staticky nahrazeno v době sestavení jednou z následujících hodnot:

Kontext Hodnota
wrangler dev "development"
wrangler deploy nebo wrangler build "production"

Můžete použít process.env.NODE_ENV pro podmíněné spuštění kódu na základě kontextu sestavení:

if (process.env.NODE_ENV === "development") {
	console.log("Running in development mode");
}

Protože process.env.NODE_ENV se nahrazuje v době sestavení, kód určený pouze pro vývoj lze odstranit z produkčního balíčku.

Výchozí hodnotu můžete přepsat nastavením NODE_ENV proměnnou prostředí při spuštění příkazu:

NODE_ENV=staging npx wrangler dev

Podmíněné exporty

Wrangler respektuje podmíněný exports pole v package.json. Díky tomu mohou vývojáři implementovat izomorfní knihovny, které mají odlišnou implementaci podle toho, ve kterém JavaScript runtime běží. Při bundlování se Wrangler pokusí načíst workerd klíč. Viz repozitář Wrangler, kde najdete ukázkový izomorfní balíček.

Zakázat bundling

Pokud vaše nástroje pro sestavení už produkují výstupy vhodné pro přímé nasazení na Cloudflare, můžete bundlování vypnout pomocí --no-bundle příznak příkazové řádky: npx wrangler deploy --no-bundle. Pokud bundlování vypnete, Wrangler váš kód nezpracuje a některé funkce, které bundlování Wrangler přináší (například minifikaci a vkládání polyfillů), nebudou k dispozici.

Použijte Custom Builds pro přizpůsobení toho, co Wrangler sbalí a nahraje do globální sítě Cloudflare, když použijete wrangler dev a wrangler deploy.

Vygenerovaná konfigurace Wrangler

Některé nástroje frameworků nebo vlastní procesy před sestavením vygenerují upravenou konfiguraci Wrangler, která se použije k nasazení kódu Workeru. Wrangler pak může tuto vygenerovanou konfiguraci použít automaticky místo původní konfigurace uživatele.

Viz Vygenerovaná konfigurace Wrangler s dalšími informacemi.