Đến nội dung

Cấu hình ​

CLI đọc cấu hình của ứng dụng từ myzig.zon ở thư mục gốc hoặc myzig.json (không phải cả hai). Mọi trường đều là tùy chọn; không có tệp, các giá trị mặc định bên dưới sẽ được áp dụng. Bản thân Zig không bao giờ đọc nó: zig build xây dựng ứng dụng từ build.zig và build.zig.zon, đồng thời cấu hình cho biết cách CLI chạy, đóng gói và đặt tên cho nó.

zig
.{
    .name = "My App",
    .identifier = "com.example.myapp",
    .version = "1.2.0",              // default: build.zig.zon's
    .copyright = "© 2026 Example Inc.",
    .icon = "resources/icon.png",    // default when it exists
    .executable = "my_app",          // the artifact build.zig installs
    .frontend = "frontend",          // the web frontend's sources
    .frontend_dist = "frontend",     // what build.zig embeds
    .dev_url = "http://localhost:5173",
    .dev_command = "bun run dev",
    .build_command = "bun run build",
    .out = "dist",
    .resources = .{"third_party/licenses"},
    .url_schemes = .{"myapp"},
    .file_associations = .{.{ .ext = .{"md"}, .name = "Markdown Document" }},
    .macos = .{ .minimum_system_version = "12.0", .signing_identity = "-" },
    .windows = .{ .installer = true },
    .linux = .{ .maintainer = "Jane <jane@example.com>", .command = "my-app" },
}

Đường dẫn có liên quan đến thư mục gốc hoặc tuyệt đối của ứng dụng. Một trường mà CLI không biết là một lỗi đặt tên cho nó (myzig.zon has no field nmae), cũng như một giá trị không đúng loại; lỗi cú pháp ZON đưa ra dòng và cột của nó.

Ứng dụng ​

lĩnh vựcmặc định
nametên của thư mụctên mà mọi người nhìn thấy: gói, trình cài đặt, lớp cửa sổ
identifiercom.myzig.<name>tên DNS đảo ngược (chữ cái, chữ số, . và -), dưới dạng com.example.myapp: mã định danh gói, khóa gỡ cài đặt, tên của tệp kê khai Windows
versionbuild.zig.zon của .version, khác 0.1.0phiên bản của gói và trình cài đặt (Windows chiếm tối đa bốn số)
copyrightkhông cómacOS's NSHumanReadableCopyright, Windows' LegalCopyright
iconresources/icon.png khi nó tồn tạimột PNG hình vuông (1024 pixel là tốt nhất): Kích thước của .icns, .ico, Linux được tạo từ nó
executablebuild.zig.zon's .name, nếu không thì tên trong vỏ rắntạo phẩm build.zig cài đặt (zig-out/bin/<executable>)

name, version và identifier không thể giữ dấu ngoặc kép hoặc ký tự điều khiển. Giữ identifier giống với AppOptions.id trong mã của ứng dụng, đặt tên cho khóa phiên bản duy nhất, trình xử lý URL và bí mật (xem Ứng dụng).

Phát triển và frontend ​

lĩnh vựcmặc định
frontendfrontend khi thư mục tồn tạinguồn của frontend web, trong đó generate và dev viết myzig.js và myzig.d.ts
frontend_distfrontendfrontend được xây dựng mà ứng dụng nhúng; CLI ghi myzig_assets.zig của nó và chuyển nó dưới dạng -Dfrontend
dev_urlkhông cómột URL http:// hoặc https://: myzig dev đợi nó và chuyển nó dưới dạng MYZIG_DEV_URL
dev_commandkhông cómáy chủ nhà phát triển myzig dev chạy đầu tiên (bun run dev), trong shell, trong thư mục gốc của ứng dụng
build_commandkhông cómyzig build chạy gì đầu tiên để xây dựng frontend (bun run build)
outdistnơi myzig build đặt các gói
watchkhông cóđược chấp nhận; myzig dev đã xem toàn bộ thư mục ứng dụng

Giao diện người dùng không có bản dựng (đơn giản HTML, như mẫu web) chỉ có frontend: ứng dụng nhúng các nguồn của nó. Giao diện người dùng do Vite xây dựng hoặc một công cụ khác đặt frontend_dist làm đầu ra của nó và dev_command, dev_url và build_command:

zig
.{
    .name = "Notes",
    .frontend = "frontend",
    .frontend_dist = "frontend/dist",
    .dev_command = "bun run --cwd frontend dev",
    .dev_url = "http://localhost:5173",
    .build_command = "bun run --cwd frontend build",
}

Xem Frontend để biết phía bên của trang.

Tích hợp ​

lĩnh vựcmặc định
resourceskhông cócác tập tin và thư mục được gửi bên cạnh ứng dụng, bên cạnh những gì resources/ chứa
url_schemeskhông cóLược đồ URL mà ứng dụng mở ra (myapp cho myapp://...): chữ cái, chữ số, +, - và ., bắt đầu bằng một chữ cái
file_associationskhông cóloại tệp ứng dụng sẽ mở

Mọi thứ đều có trong resources/ nhưng biểu tượng cũng đi kèm với ứng dụng: xem Phân phối.

Một liên kết tập tin là:

lĩnh vựcmặc định
extbắt buộcphần mở rộng không có dấu chấm (.{ "md", "markdown" })
name<EXT> filetên loại trong hệ thống
mime_typeapplication/x-<executable>-<ext>loại MIME; Các gói Linux xác định loại khi nó là của myzig
roleEditorEditor hoặc Viewer (macOS)

Các gói đăng ký những thứ này với hệ thống: CFBundleURLTypes và CFBundleDocumentTypes trong gói macOS, các khóa đăng ký được viết bởi trình cài đặt Windows, MimeType= trong mục nhập Linux trên máy tính để bàn. Ứng dụng cũng đặt tên cho chúng theo các tùy chọn riêng, AppOptions.url_schemes và AppOptions.file_extensions, để các lần khởi chạy có đối số như vậy đạt tới on_open_url và on_open_file, đồng thời có thể đăng ký chúng trong khi chạy (myzig.system.registerUrlScheme, registerFileType; xem Hệ thống).

macos ​

lĩnh vựcmặc định
minimum_system_version12.0LSMinimumSystemVersion
signing_identity-Danh tính của codesign; - ký đặc biệt (chạy trên máy Mac đã xây dựng nó)
entitlementskhông cótệp quyền lợi cho codesign
provisioning_profilekhông cómột hồ sơ được nhúng dưới dạng Contents/embedded.provisionprofile trước khi ký; nó phải khớp với mã nhận dạng, quyền lợi và danh tính ký của ứng dụng và không thể được sử dụng với chức năng ký đặc biệt. Xem hồ sơ cung cấp
dmg_titlecái têntên ổ đĩa của ảnh đĩa
iconkhông cómột .icns (tạo bằng iconutil từ một .iconset) mà gói dùng thay cho cái được vẽ từ icon, cho biểu tượng vẽ riêng từng kích thước; myzig dev hiện PNG
info_plistkhông cócác khóa được thêm vào Info.plist, thay thế các khóa của myzig
zig
.macos = .{
    .signing_identity = "Developer ID Application: Example Inc. (TEAMID)",
    .entitlements = "resources/macos/app.entitlements",
    .info_plist = .{ .NSCameraUsageDescription = "Scans documents", .LSUIElement = true },
},

Cập nhật ​

Đã ký cập nhật. public_key và một trong github và url là bắt buộc.

lĩnh vựcmặc định
public_keynội dung của myzig-update.pub (myzig keygen)
githubkho lưu trữ công cộng (owner/name) có bản phát hành chứa các bản cập nhật; ứng dụng đọc bản kê khai của bản phát hành mới nhất
tag_prefixvthẻ của bản phát hành: v1.2.0
urlthư mục HTTPS phục vụ các bản cập nhật thay vì GitHub
s3nhóm phục vụ url, --upload đặt các tệp vào: bucket, prefix (thư mục của nó), region, endpoint (một dịch vụ tương thích, như của Cloudflare R2), path_style
private_keyđường dẫn của myzig-update.key (có thể bắt đầu bằng ~/); MYZIG_UPDATER_PRIVATE_KEY đến trước
changelogCHANGELOG.md khi nó tồn tạitệp Markdown có phần ## <version> là ghi chú phát hành
zig
.updates = .{
    .public_key = "…",
    .url = "https://downloads.example.com/my-app",
    .s3 = .{ .bucket = "downloads", .prefix = "my-app", .endpoint = "https://<account>.r2.cloudflarestorage.com" },
},

Các cửa sổ ​

lĩnh vựcmặc định
installertrueviết tập lệnh của trình cài đặt NSIS và tạo trình cài đặt khi makensis được cài đặt
uninstall_runkhông cóđối số mà trình gỡ cài đặt chạy ứng dụng và chờ đợi trước khi lấy đi các tệp của nó: để ứng dụng hoàn tác những gì nó tự thiết lập (một lệnh trên PATH, menu của File Explorer)
uninstall_datakhông cócác thư mục chứa dữ liệu của ứng dụng, dưới dạng đường dẫn NSIS ($APPDATA\\MyApp), trình gỡ cài đặt cũng đề nghị xóa, hãy hỏi trước; việc gỡ cài đặt im lặng sẽ giữ chúng
install_dir_nametên ứng dụngthư mục trong %LOCALAPPDATA%\Programs mà trình cài đặt đặt ứng dụng vào, ví dụ ZhiLian (ASCII) cho ứng dụng tên 智链; lối tắt và Settings › Apps giữ tên, và ứng dụng đã cài được cập nhật tại chỗ
installer_includekhông cómột script NSIS của ứng dụng mà trình cài đặt include, như resources/installer.nsh, sau MUI2.nsh và các ngôn ngữ: các macro nó định nghĩa trong số customInit, customInstall và customUnInstall chạy khi trình cài đặt bắt đầu (.onInit), cuối bước cài đặt khi các tệp đã ở $INSTDIR, và trong bước gỡ cài đặt trước khi thư mục ứng dụng bị xoá; cài đặt im lặng cũng chạy chúng

linux ​

lĩnh vựcmặc định
maintainercái tênMaintainer của gói Debian
commentkhông cómục nhập trên máy tính để bàn của Comment
categoriesUtilitymục nhập trên máy tính để bàn của Categories
dependskhông cónhiều phần phụ thuộc Debian hơn, sau GTK 3 và WebKitGTK
commandkhông cómột lệnh trong /usr/bin chạy ứng dụng (chữ cái, chữ số, ., _, +, -), hoặc một danh sách lệnh

myzig.json ​

Các trường tương tự trong JSON:

json
{
  "name": "Hello",
  "dev_url": "http://localhost:5173",
  "file_associations": [{ "ext": ["md"], "name": "Markdown" }],
  "windows": { "installer": false }
}

Nó được đọc như thế nào ​

CLI đọc tệp bằng trình đọc ZON riêng (cli/src/zon.zig, để nó đọc giống nhau trên các phiên bản Zig và cho biết lỗi ở đâu), điền vào các giá trị mặc định (từ build.zig.zon và thư mục) rồi kiểm tra kết quả: tiện ích mở rộng không có dấu chấm, URL scheme và mã nhận dạng theo yêu cầu của hệ thống, dev_url URL http(s), role Editor hoặc Viewer. Config trong cli/src/config.zig là tài liệu tham khảo.

Phát hành theo giấy phép MIT.