文件模式
*
匹配单个路径部分中的 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}
— 展开为ia32
、x64
。如果无arch
,宏将从您的模式中删除,并带有前导空格、-
和_
(因此,您无需担心并且可以重用模式)。${os}
— 根据目标平台展开为mac
、linux
或win
。${platform}
— 根据 Node.jsprocess.platform
属性展开为darwin
、linux
或win32
。${name}
–package.json
name
。${productName}
— 已清理的产品名称。${version}
${channel}
— 从版本中检测到的预发布组件(例如beta
)。${env.ENV_NAME}
— 任何环境变量。- AppInfo 的任何属性(例如
buildVersion
、buildNumber
)。