我希望vscode能够为我的package.json中的条件导出解析一个"vscode"条件。我的用例是解析我的TypeScript模块,这样我就可以在不打包代码/生成源Map的情况下使用"转到"操作。或者,vscode可以添加一个用户条件的设置,就像node.js一样:https://nodejs.org/api/packages.html#resolving-user-conditions.
wi3ka0sx1#
我希望vscode在我的package.json中解决一个"vscode"条件导出。我的用例是解析我的TypeScript模块,这样我就可以在不打包代码/生成源Map的情况下使用"转到"操作。
抱歉,但我不完全理解这是什么意思。你是想要实现vscode模块的条件解析吗?例如,在某些条件下,它的导入解析为其他内容?
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
--conditions
jk9hmnmh3#
嘿,@jrieken,这个问题可能需要进一步关注。@vveisard,如果你发现问题已经不存在了,可以帮我们关闭这个问题,或者提供更多信息。
z0qdvdin4#
嘿,只是提到这个问题仍然存在。
vd2z7a6w5#
你好,有人找到这个问题的解决方案或解决方法了吗?为了给更多上下文,如果在一个 workspace 中引用了模块,而 package.json 包含了类似以下内容:
package.json
{ "name": "@workspace/module", ... "exports": { ".": { "dev": "./index.js", "import": "./dist/index.js" } } ... }
(注意 dev 键,定义了一个条件导出。)假设你在同一个工作区中有某个文件正在导入该模块:
dev
import something from '@workspace/module';
当节点使用 conditions 标志调用时,模块解析会发生变化:
conditions
node --conditions=dev index.js
./index.js
@workspace/module
node index.js
./dist/index.js
但是只有在模块实际构建时才会生成 /dist/ 文件(即仅在生产环境中),因此 VSCode 似乎无法从 @workspace/module 自动补全任何内容(它正在寻找的文件不存在)。可以通过在 exports 的末尾添加一个 hackydefault 来使自动补全正常工作,如下所示:
/dist/
exports
default
{ "name": "@workspace/module", ... "exports": { ".": { "dev": "./index.js", "import": "./dist/index.js", + "default": "./index.js" } } ... }
但这个解决方案并不理想:不仅会为了特定编辑器而污染 package.json 文件,而且如果不非常小心地处理这个导出警告,还可能会创建其他错误。非常感谢任何帮助或指向解决问题的方法。
5条答案
按热度按时间wi3ka0sx1#
我希望vscode在我的package.json中解决一个"vscode"条件导出。我的用例是解析我的TypeScript模块,这样我就可以在不打包代码/生成源Map的情况下使用"转到"操作。
抱歉,但我不完全理解这是什么意思。你是想要实现vscode模块的条件解析吗?例如,在某些条件下,它的导入解析为其他内容?
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---conditionsconditionjk9hmnmh3#
嘿,@jrieken,这个问题可能需要进一步关注。
@vveisard,如果你发现问题已经不存在了,可以帮我们关闭这个问题,或者提供更多信息。
z0qdvdin4#
嘿,只是提到这个问题仍然存在。
vd2z7a6w5#
你好,
有人找到这个问题的解决方案或解决方法了吗?
为了给更多上下文,如果在一个 workspace 中引用了模块,而
package.json
包含了类似以下内容:(注意
dev
键,定义了一个条件导出。)假设你在同一个工作区中有某个文件正在导入该模块:
当节点使用
conditions
标志调用时,模块解析会发生变化:node --conditions=dev index.js
将从./index.js
文件解析@workspace/module
node index.js
将从./dist/index.js
文件解析@workspace/module
但是只有在模块实际构建时才会生成
/dist/
文件(即仅在生产环境中),因此 VSCode 似乎无法从@workspace/module
自动补全任何内容(它正在寻找的文件不存在)。可以通过在
exports
的末尾添加一个 hackydefault
来使自动补全正常工作,如下所示:但这个解决方案并不理想:不仅会为了特定编辑器而污染
package.json
文件,而且如果不非常小心地处理这个导出警告,还可能会创建其他错误。非常感谢任何帮助或指向解决问题的方法。