跳到内容

文件模式

  • * 匹配单个路径部分中的 0 个或多个字符
  • ? 匹配 1 个字符
  • [...] 匹配字符范围,类似于 RegExp 范围。如果范围的第一个字符是 !^,则它匹配范围中未包含的任何字符。
  • !(pattern|pattern|pattern) 匹配与提供的任何模式都不匹配的任何内容。
  • ?(pattern|pattern|pattern) 匹配提供的模式的零次或一次出现。
  • +(pattern|pattern|pattern) 匹配提供的模式的一次或多次出现。
  • *(a|b|c) 匹配提供的模式的零次或多次出现
  • @(pattern|pat*|pat?erN) 完全匹配提供的模式之一
  • ** 如果“globstar”在路径部分中是单独的,则它匹配零个或多个目录和子目录以搜索匹配项。它不会爬取符号链接目录。

如果目录匹配,则复制所有内容。因此,您可以只指定 foo 来复制 foo 目录。

排除目录

请记住,!doNotCopyMe/**/* 将匹配 doNotCopyMe 目录的文件,但不匹配目录本身,因此将创建空目录。解决方案 — 使用宏 ${/*},例如 !doNotCopyMe${/*}

多个 Glob 模式

[
  // match all files
  "**/*",

  // except for js files in the foo/ directory
  "!foo/*.js",

  // unless it's foo/bar.js
  "foo/bar.js",
]

文件宏

您可以在文件模式、工件文件名模式和发布配置 URL 中使用宏

  • ${arch} — 展开为 ia32x64。如果无 arch,宏将从您的模式中删除,并带有前导空格、-_(因此,您无需担心并且可以重用模式)。
  • ${os} — 根据目标平台展开为 maclinuxwin
  • ${platform} — 根据 Node.js process.platform 属性展开为 darwinlinuxwin32
  • ${name}package.json name
  • ${productName}已清理的产品名称。
  • ${version}
  • ${channel} — 从版本中检测到的预发布组件(例如 beta)。
  • ${env.ENV_NAME} — 任何环境变量。
  • AppInfo 的任何属性(例如 buildVersionbuildNumber)。