匹配 *.ts 但不匹配 *.d.ts 的 Webpack 正则表达式测试
Webpack regex test that matches *.ts but not *.d.ts
我正在使用 Webpack (2.3.3) 在 TS 中构建我的 Aurelia 应用程序。但是,由于我正在为 AureliaPlugin (2.0.0-rc.2) 使用 includeAll
选项,ts-loader (2.0.3) 会抱怨 d.ts 没有任何输出的文件没有输出。
这是我对 ts 文件的规则:{ test: /\.ts$/, include: /ClientApp/, use: "ts-loader" }
我需要更改测试值,使其与名为 *.ts 的文件匹配,但 *.d.ts 除外。你能帮帮我吗?
注意:我看到已经有一个类似的正则表达式问题,但那个对我不起作用。
匹配末尾有 .ts
而不是 .d.ts
的字符串的正则表达式是
/(^.?|\.[^d]|[^.]d|[^.][^d])\.ts$/
看到一个regex demo。它是一个 POSIX 风格的表达式,适用于任何正则表达式引擎。
详情
(^.?|\.[^d]|[^.]d|[^.][^d])
- 以下任一项:
^.?
- 字符串开头 + 任何可选字符
\.[^d]
- 一个点和除 d
之外的任何字符
[^.]d
- 除了 .
和 d
之外的任何字符
[^.][^d]
- 除了 .
之外的任何字符,然后是 d
之外的任何字符(这样,我们匹配除 .d
之外的所有字符)
\.
- 文字点
ts$
- ts
在字符串末尾。
或者,使用基于前瞻的解决方案:
/^(?!.*\.d\.ts$).*\.ts$/
详情:
^
- 字符串开头
(?!.*\.d\.ts$)
- 字符串不能以 .d.ts
结尾
.*
- 之前的任何 0+ 个字符
\.ts$
- .ts
在字符串的末尾。
但是,您可以探索 this SO thread 中描述的另一个选项。
我正在使用 Webpack (2.3.3) 在 TS 中构建我的 Aurelia 应用程序。但是,由于我正在为 AureliaPlugin (2.0.0-rc.2) 使用 includeAll
选项,ts-loader (2.0.3) 会抱怨 d.ts 没有任何输出的文件没有输出。
这是我对 ts 文件的规则:{ test: /\.ts$/, include: /ClientApp/, use: "ts-loader" }
我需要更改测试值,使其与名为 *.ts 的文件匹配,但 *.d.ts 除外。你能帮帮我吗?
注意:我看到已经有一个类似的正则表达式问题,但那个对我不起作用。
匹配末尾有 .ts
而不是 .d.ts
的字符串的正则表达式是
/(^.?|\.[^d]|[^.]d|[^.][^d])\.ts$/
看到一个regex demo。它是一个 POSIX 风格的表达式,适用于任何正则表达式引擎。
详情
(^.?|\.[^d]|[^.]d|[^.][^d])
- 以下任一项:^.?
- 字符串开头 + 任何可选字符\.[^d]
- 一个点和除d
之外的任何字符
[^.]d
- 除了.
和d
之外的任何字符
[^.][^d]
- 除了.
之外的任何字符,然后是d
之外的任何字符(这样,我们匹配除.d
之外的所有字符)
\.
- 文字点ts$
-ts
在字符串末尾。
或者,使用基于前瞻的解决方案:
/^(?!.*\.d\.ts$).*\.ts$/
详情:
^
- 字符串开头(?!.*\.d\.ts$)
- 字符串不能以.d.ts
结尾
.*
- 之前的任何 0+ 个字符
\.ts$
-.ts
在字符串的末尾。
但是,您可以探索 this SO thread 中描述的另一个选项。