0

我正在使用 Typescript 作为编程语言开发一个 npm 库。为了舒适地开发它,我使用了pathstsconfig.json 中的选项,module-alias这样我就可以编写诸如import * from '@/utils'. 问题是这些路径在转译的 js 文件中也保持不变。这应该很好,因为module-alias应该使用这些路径。问题是它只有在我在本地使用它时才会这样做,但是当我使用 npm 安装库并尝试运行它时,它会停止工作。我该如何解决这个问题?

注意:我发现了问题,如果我使用我的库将__moduleAliases配置放在项目的 package.json 中并使用我的库的 dist 路径,它就可以工作。我仍然不知道如何解决这个问题。

4

2 回答 2

0

我想我找到了一个解决方案,但它仍然不完美。

我可以通过module-alias设置将 package.json 的路径作为参数传递,所以我只是用moduleAlias(path.join(__dirname, '..', 'package.json'));“绝对”方式指定我的库的 package.json,即使它是由另一个用户在另一个项目模块中安装的别名将使用我的库的 package.json。

仍然存在两个问题:

  • 第一个是如果导入我的库的项目也使用模块别名,它将不再工作,因为它将在我的库中而不是在我的项目中搜索别名。
  • 第二个是如果我的项目使用打字稿,遇到@时会抛出错误。我认为解决这个问题的唯一方法是使用将“@”路径更改为 js 结果中的真实路径的东西
于 2020-12-22T14:24:51.273 回答
0

原来很容易解决。我最终使用 webpack 将所有 @ 别名路径更改为正常路径,以便此问题不再存在,并删除了模块别名。我使用了这个 webpack 插件 https://www.npmjs.com/package/tsconfig-paths-webpack-plugin,而这个其他插件可以在没有 webpack https://www.npmjs.com/package/tsconfig-paths的情况下使用

要查看使用 webpack 编译的库并使用此插件,您可以查看https://github.com/euberdeveloper/euberlog

于 2020-12-25T15:05:56.007 回答