typescript - 如何配置 Webpack 从其 src 文件夹而不是 dist 加载模块?
问题描述
我正在开发一个 monorepo,因此我希望 Webpack 从而src
不是dist
(dist
在 中指定package.json
)加载我的源代码。
例如给定以下结构:
/packages/core/dist/index.js (compiled output)
/packages/core/src/index.ts (original TypeScript source)
/packages/core/package.json (`main` and `module` point to `dist`)
现在/packages/foo/src/index.ts
我在里面做import Foo from '@test/core'
。问题是 Webpack 读取core
包package.json
并使用它的module
和main
指向dist
文件夹的字段。相反,我希望 Webpack 从 加载原始源代码src
,因为这@test/core
是我自己的代码库的一部分,而不是外部依赖项。
有没有办法强制 Webpack 仅为某些模块(例如以 开头的模块)加载我的原始 TS 源@test/
?
解决方案
我解决了它NormalModuleReplacementPlugin
:
我把它放在我的 Webpack 配置中:
plugins: [
new webpack.NormalModuleReplacementPlugin(
/@test\/[a-z]+$/,
resource => {
resource.request = resource.request + '/src/index'
}
)
]
由于我使用的是 TS,因此我还必须将.ts
扩展名添加到:
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx']
}
现在 importing@test/xyz
将被导入为@test/xyz/src/index
-- 并且它会首先寻找.ts
扩展名。
推荐阅读
- reactjs - 在 PropTypes 中防止 div 作为子级只允许一个组件
- javascript - Google App Script setTimeout 函数问题
- javascript - 正确返回 javascript 函数中的信息
- cassandra - DSE (Cassandra) - int 数据类型的范围搜索
- go - How to implement regex /cat[s]?(\b|$)/ with ragel correclty?
- sql - 如何对两个匹配表的值求和而不在 SQL 中获取重复项
- java - 您可以使用 Java 反射在运行时定义和调用方法吗?
- c# - Xamarin Forms Stop loading data in CollectionView
- django - Cannot save record from Django Model
- go - 模块中的 Go 应用程序版本