typescript - 如何配置 Webpack 从其 src 文件夹而不是 dist 加载模块?

标签 typescript webpack package.json lerna monorepo

我正在开发一个 monorepo,因此我希望 Webpack 从 src 加载我的源代码而不是 dist (distpackage.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并使用它的modulemain指向 dist 的字段文件夹。我希望 Webpack 从 src 加载原始源。 , 因为这个 @test/core是我自己的代码库的一部分,而不是外部依赖项。

有没有办法强制 Webpack 只为某些模块加载我的原始 TS 源,例如以 @test/ 开头的模块?

最佳答案

您可以使用 resolve alias .

例如,假设您的 webpack 配置位于 packages 文件夹上方:

{
  resolve: {
    extensions: [".ts", ".js", ".json"],
    alias: {
      "@test/core": path.resolve(__dirname, "packages/core/src")
    }
  }
}

然后你可以像往常一样使用 require ,但是任何以 @test/core 开头的路径将解析为 path.resolve(__dirname, "packages/core/dist") .
  • require("@test/core") => packages/core/src/index.ts
  • require("@test/core/module") => packages/core/src/module.ts

  • .ts是一个非标准扩展,您必须将其添加到 resolve.extensions .

    关于typescript - 如何配置 Webpack 从其 src 文件夹而不是 dist 加载模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618435/

    相关文章:

    reactjs - 我正在尝试使用 Tauri 1.2、Rust、React 和 Typescript 创建一个新窗口。我面临一些问题

    javascript - 如何找到mat-table的索引并执行函数

    webpack - 如何在命令行中删除文件名中包含特定单词的文件?

    node.js - 如何使用 Gulp 将多个 (npm) package.json 文件合并为一个?

    javascript - '.'不被识别为内部或外部命令、可运行程序或批处理文件

    TypeScript 错误转换接口(interface)联合字段

    typescript - 为什么数组和字符串的长度属性有不同的返回类型?

    webpack - 轨道和网络包 : How do I call functions in application pack?

    node.js - 使用 webpack 解析 node_modules 路径以启动跨多个兄弟项目的文件夹

    reactjs - 在 Next Js 中编辑 CSS-loader localIdentName 以对用户隐藏类名