【问题标题】:Webpack regex test that matches *.ts but not *.d.ts匹配 *.ts 但不匹配 *.d.ts 的 Webpack 正则表达式测试
【发布时间】:2017-09-15 08:59:13
【问题描述】:

我正在使用 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 除外。你能帮帮我吗?

注意:我看到已经有一个类似的正则表达式问题,但对我不起作用。

【问题讨论】:

    标签: regex webpack aurelia ts-loader


    【解决方案1】:

    匹配末尾带有.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$/
    

    another demo

    详情

    • ^ - 字符串开头
    • (?!.*\.d\.ts$) - 字符串不能以 .d.ts 结尾
    • .* - 任何 0+ 字符到
    • \.ts$ - .ts 在字符串的末尾。

    但是,您可以探索this SO thread 中描述的另一个选项。

    【讨论】:

    • 从未见过野外的功能测试,所以我对此一无所知。啊,正则表达式也有效。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多