问题
I am using Webpack (2.3.3) to build my Aurelia app in TS. However, since I am using includeAll option for AureliaPlugin (2.0.0-rc.2), ts-loader (2.0.3) cries about d.ts files that has nothing exported emitting no output.
here is my rule for ts files: { test: /\.ts$/, include: /ClientApp/, use: "ts-loader" }
I need to change the test value in a way that it matches files named *.ts except *.d.ts. Can you help me please?
Note: I see there is already a similar regex question but that one did not work for me.
回答1:
A regex that matches strings with .ts at the end but not .d.ts is
/(^.?|\.[^d]|[^.]d|[^.][^d])\.ts$/
See a regex demo. It is a POSIX style expression that will work with any regex engine.
Details
(^.?|\.[^d]|[^.]d|[^.][^d])- either of:^.?- start of string + any optional char\.[^d]- a dot and any char butd[^.]d- any char but.andd[^.][^d]- any char but.and then any char butd(this way, we match all but.d)
\.- a literal dotts$-tsat the end of string.
Alternatively, use a lookahead based solution:
/^(?!.*\.d\.ts$).*\.ts$/
See another demo
Details:
^- start of string(?!.*\.d\.ts$)- the string cannot end with.d.ts.*- any 0+ chars up to the\.ts$-.tsat the end of the string.
However, you might explore another option described in this SO thread.
来源:https://stackoverflow.com/questions/43490499/webpack-regex-test-that-matches-ts-but-not-d-ts