【发布时间】:2021-07-15 09:43:10
【问题描述】:
我正在尝试编写 requires 其他节点模块的 VS 代码扩展。不幸的是,当用户从市场安装扩展时,找不到这些模块。
我所做的是将模块添加到my package.json 的dependencies 部分(这是extension manifest 想要的)。当我在本地运行 npm install 时,会创建一个 node_modules 文件夹并包含模块。通过 launch.json 在本地运行扩展是可行的。
但是,当通过VS Code Marketplace 安装扩展时,触发其操作将失败,调试工具控制台将显示消息
Activating extension 'lalten.vscode-unify' failed: Cannot find module 'tempy'
Require stack:
- /home/laurenz/.vscode-server/extensions/lalten.vscode-unify-0.2.2/out/extension.js
- /home/laurenz/.vscode-server/bin/3c4e3df9e89829dce27b7b5c24508306b151f30d/out/vs/loader.js
- /home/laurenz/.vscode-server/bin/3c4e3df9e89829dce27b7b5c24508306b151f30d/out/bootstrap-amd.js
- /home/laurenz/.vscode-server/bin/3c4e3df9e89829dce27b7b5c24508306b151f30d/out/bootstrap-fork.js.
并且确实缺少 node_modules 目录:
$ ls /home/user/.vscode-server/extensions/lalten.vscode-unify-0.2.2/
icon.png images LICENSE.md out package.json README.md
(这发生在本地和 ssh-remote vscode-server 中,/home/laurenz/.vscode/extensions/lalten.vscode-unify-0.2.2/ 也没有 node_modules。)
.vscodeignore 似乎是无辜的,vsce ls 包含 node_modules/。
其他人过去遇到过这个问题,但他们的解决方案是update vsce(我有最新的1.87.1),使用dependencies instead of devDependencies(我这样做)或deleting the node_modules folder(这没有帮助)。
我也很奇怪这个扩展在CI 中工作,所以我的直觉是它一定是它的发布方式。
有什么想法吗?
【问题讨论】:
-
从市场下载
.vsix文件并将其作为 .zip 文件打开时,似乎没有包含任何node_modules文件夹。因此,如果vsce ls包含它,则某些内容不会累加。 -
一般来说,最好还是将依赖项捆绑到一个文件中以提高性能。另见:code.visualstudio.com/api/working-with-extensions/…
-
在本地创建一个带有
vsce的.vsix文件,并确定该文件中为什么不包含node_modules
标签: node.js visual-studio-code node-modules package.json vscode-extensions