当我只希望它在一个文件夹/文件中运行时,WebPack ts-loader 编译所有文件

Posted

技术标签:

【中文标题】当我只希望它在一个文件夹/文件中运行时,WebPack ts-loader 编译所有文件【英文标题】:WebPack ts-loader compiling all files when I only want it to run in one folder/file 【发布时间】:2017-05-08 10:34:19 【问题描述】:

我在使用 WebPack、TypeScript 和 TS-Loader 的应用程序结构和构建过程中发现了一个问题,我认为这是由 TypeScript 2.1.4 引起的,但显然一直存在。

您可以从我的另一篇文章中查看所有详细信息: TypeScript 2.1.4 breaking changes in webpack ts-loader

简而言之,我将 Gulp 和 WebPack 设置为 /client/app.ts 的入口点,它现在几乎没有任何内容(当然没有引用 /server/),但 WebPack 构建过程的 TypeScript 编译阶段是仍在尝试在 /server 上运行(在我的另一篇文章中,显示服务器文件夹中的编译错误,而它应该只从客户端文件夹中运行)。

我做错了什么以及如何解决它,使其仅在 /client/.ts 文件上运行,并专门从 app.ts 遍历结构?

这是我的存储库,显示了到目前为止我正在使用的所有内容: https://github.com/CmdrShepardsPie/test-ts-app/tree/develop

谢谢

【问题讨论】:

看看你的另一个问题 - 我会从你的项目中完全删除 gulp。它看起来并没有给您带来任何好处,只会增加构建管道的混乱 您可以在加载器配置中使用exclude: /server\// 排除加载器中的路径 我正在使用 Gulp 编译服务器,我将在我的问题中添加一个指向 repo 的链接以供完整参考。 如果我传入要专门处理的路径和/或文件,我认为不需要包含/排除任何内容。 为什么不单独使用webpack来编译服务器呢? 【参考方案1】:

您可以通过在webpack.config.js 中指定选项onlyCompileBundledFiles 来解决此错误,就像这样

module: 
    rules: [
        
            test: /\.tsx?/,
            use: [loader: 'ts-loader', options: onlyCompileBundledFiles: true],
        
    ],
,

我仍然觉得 ts-loader 在默认情况下被破坏了,但至少有一个解决方法。

【讨论】:

这就是答案。谢谢。 感谢,这解决了我的整个 Express 应用程序(内置于 TypeScript)被包含到我的公共目录(Webpack 编译到的位置)中而不仅仅是我输出的包的问题。 只是一个更新,现在是 2020 年,ts-loader 仍然表现出这种愚蠢的行为。为什么它会自动编译所有 ts 文件,这超出了我的理解,但显然,这就是我们生活的世界。疯子。 感谢@dudewad 在 2020 年的确认——我也准备卸载所有东西来发现这个错误 令人惊讶的是,3 年后它仍然被打破。

以上是关于当我只希望它在一个文件夹/文件中运行时,WebPack ts-loader 编译所有文件的主要内容,如果未能解决你的问题,请参考以下文章

Spark在本地运行但在YARN中运行时找不到文件

在 PyCharm 中运行时记录 basicConfig 不创建日志文件?

使用 ring/compojure 提供静态文件 - 来自战争

应用未在 iO 中运行时的本地区域识别

Selenium IDE 测试在 GUI 中运行 - 但在 CL 中运行时失败(链接文本不可见)

程序在python中运行时如何防止用户输入控制台? [复制]