vscode JavaScript和TypeScript:在package.json中为条件导出解析设置"conditions"配置,

xlpyo6sf  于 6个月前  发布在  Vscode
关注(0)|答案(5)|浏览(61)

我希望vscode能够为我的package.json中的条件导出解析一个"vscode"条件。我的用例是解析我的TypeScript模块,这样我就可以在不打包代码/生成源Map的情况下使用"转到"操作。
或者,vscode可以添加一个用户条件的设置,就像node.js一样:https://nodejs.org/api/packages.html#resolving-user-conditions.

wi3ka0sx

wi3ka0sx1#

我希望vscode在我的package.json中解决一个"vscode"条件导出。我的用例是解析我的TypeScript模块,这样我就可以在不打包代码/生成源Map的情况下使用"转到"操作。

抱歉,但我不完全理解这是什么意思。你是想要实现vscode模块的条件解析吗?例如,在某些条件下,它的导入解析为其他内容?

8iwquhpp

8iwquhpp2#

我希望vscode能够在我的package.json中解析一个"vscode"条件导出。我的用例是解析我的TypeScript模块,这样我就可以在不打包代码/生成源Map的情况下使用"转到"操作。

抱歉,我不太明白这是什么意思。你是想要在某些条件下解析vscode-module的导入吗?

不,我希望VSCode能够使用package.json中的"vscode"条件导出来解析JavaScript模块:
https://nodejs.org/api/packages.html#conditional-exports

实际上,现在我想起来了,如果能完全配置VSCode使用的哪些条件来解析条件导出就更好了,就像Node.js使用--conditions标志一样:https://nodejs.org/api/cli.html#-c-condition---conditionscondition

jk9hmnmh

jk9hmnmh3#

嘿,@jrieken,这个问题可能需要进一步关注。
@vveisard,如果你发现问题已经不存在了,可以帮我们关闭这个问题,或者提供更多信息。

z0qdvdin

z0qdvdin4#

嘿,只是提到这个问题仍然存在。

vd2z7a6w

vd2z7a6w5#

你好,
有人找到这个问题的解决方案或解决方法了吗?
为了给更多上下文,如果在一个 workspace 中引用了模块,而 package.json 包含了类似以下内容:

{
  "name": "@workspace/module",
  ...
  "exports": {
      ".": {
          "dev": "./index.js",
          "import": "./dist/index.js"
      }
  }
  ...
}

(注意 dev 键,定义了一个条件导出。)
假设你在同一个工作区中有某个文件正在导入该模块:

import something from '@workspace/module';

当节点使用 conditions 标志调用时,模块解析会发生变化:

  • node --conditions=dev index.js 将从 ./index.js 文件解析 @workspace/module
  • node index.js 将从 ./dist/index.js 文件解析 @workspace/module

但是只有在模块实际构建时才会生成 /dist/ 文件(即仅在生产环境中),因此 VSCode 似乎无法从 @workspace/module 自动补全任何内容(它正在寻找的文件不存在)。
可以通过在 exports 的末尾添加一个 hackydefault 来使自动补全正常工作,如下所示:

{
  "name": "@workspace/module",
  ...
  "exports": {
      ".": {
          "dev": "./index.js",
          "import": "./dist/index.js",
+         "default": "./index.js"
      }
  }
  ...
}

但这个解决方案并不理想:不仅会为了特定编辑器而污染 package.json 文件,而且如果不非常小心地处理这个导出警告,还可能会创建其他错误。
非常感谢任何帮助或指向解决问题的方法。

相关问题