如何导出Visual Studio Code扩展列表?

我需要把我安装的所有扩展发给我的同事。我如何导出它们?

扩展管理器似乎什么也不做…它不会安装任何扩展。

265094 次浏览

有一个扩展管理器扩展,可能会有帮助。它似乎允许安装一组在settings.json. #中指定的扩展。

我自己也需要这样做几次——尤其是在另一台机器上安装时。

常见问题会告诉你文件夹的位置

Visual Studio Code在扩展文件夹.vscode/extensions下查找扩展。取决于你所在的平台:

Windows %USERPROFILE%\.vscode\extensions
Mac ~/.vscode/extensions
Linux ~/.vscode/extensions

这应该会显示一个扩展列表。

我还成功地使用Visual Studio代码设置同步扩展将设置同步到GitHub gist。

在Visual Studio Code的最新版本(2016年5月)中,现在可以在命令行中列出已安装的扩展:

code --list-extensions

我打开Visual Studio Code扩展文件夹并执行:

find * -maxdepth 2 -name "package.json" | xargs grep "name"

这将为您提供一个列表,您可以从中提取扩展名。

我已经开发了一个扩展,它将同步你所有的Visual Studio代码设置跨多个实例。

关键特性

  1. 使用你的GitHub账户令牌。
  2. 易于上传和下载一键。
  3. 保存所有设置和片段文件。
  4. 上传键:转变 + Alt + U
  5. 下载键:转变 + Alt + D
  6. 输入“同步”查看所有同步选项

它同步

  1. 设置文件
  2. Keybinding文件
  3. 启动文件
  4. 片段的文件夹
  5. Visual Studio代码扩展

详细文档来源

Visual Studio Code Sync ReadMe

在这里下载:Visual Studio Code Settings Sync . bb0

生成用于安装扩展的Windows命令文件(批处理):

for /F "tokens=*" %i in ('code --list-extensions')
do @echo call code --install-extension %i >> install.cmd

打开Visual Studio Code控制台并编写:

code --list-extensions(如果安装了Visual Studio Code内部,则为code-insiders --list-extensions)

然后与同事共享命令行:

code --install-extension {ext1} --install-extension {ext2} --install-extension {extN}取代{ext1}{ext2},…, {extN}与扩展你列出

对于Visual Studio Code内部人员:code-insiders --install-extension {ext1} ...

如果他们复制/粘贴到Visual Studio Code命令行终端,他们将安装共享扩展。

更多关于command-line-extension-management的信息。

我使用下面的命令将我的扩展从Visual Studio Code复制到Visual Studio Code内部:

code --list-extensions | xargs -L 1 code-insiders --install-extension

参数-L 1允许我们对code --list-extensions生成的每个输入行执行一次命令code-insiders --install-extension

仅适用于Linux/Mac,以安装脚本的形式导出已安装的Visual Studio Code扩展。它是一个Z shell (Zsh)脚本,但也可以在Bash中运行。

https://gist.github.com/jvlad/6c92178bbfd1906b7d83c69780ee4630

自动

如果你期待一个简单的一站式工具来为你做这件事,我建议你看看<强>设置同步< / >强扩展。

它将允许

  1. 出口你的配置和扩展
  2. 分享与同事和团队。您可以更新配置。他们的设置将自动更新。

手册

  1. 确保你有最新版本的Visual Studio Code。如果通过公司门户进行安装,则可能没有最新版本。

  2. 在机器A上

    Unix:

    code --list-extensions | xargs -L 1 echo code --install-extension
    

    Windows (PowerShell,例如使用Visual Studio Code的集成终端):

    code --list-extensions | % { "code --install-extension $_" }
    
  3. Copy and paste the echo output to machine B

    Sample output

    code --install-extension Angular.ng-template
    code --install-extension DSKWRK.vscode-generate-getter-setter
    code --install-extension EditorConfig.EditorConfig
    code --install-extension HookyQR.beautify
    

Please make sure you have the code command line installed. For more information, please visit Command Line Interface (CLI).

Windows (PowerShell)版本本尼的回答

机:

在Visual Studio Code PowerShell终端中:

# EYZ0

机器B:

  1. < p >复制扩展。解析:选B

  2. 在Visual Studio Code PowerShell终端:

     cat extensions.list |% { code --install-extension $_}
    

本尼的回答在Windows和Linux子系统上:

code --list-extensions | wsl xargs -L 1 echo code --install-extension

如果您打算在团队中共享工作区扩展配置,您应该研究Visual Studio Code的推荐的扩展特性。

要生成这个文件,打开命令托盘># EYZ0。从那里,如果你想获得所有当前的扩展并将它们放在这里,你可以使用其他答案中提到的--list-extensions,但添加一些AWK脚本,使其可粘贴到JSON数组中(你可以根据自己的需要获得更多或更少的高级功能-这只是一个快速示例):

# EYZ0

这种方法的优点是可以将团队范围内的工作空间配置检入源代码控制。有了这个文件在项目中,当项目打开时,Visual Studio Code会通知用户有推荐的扩展需要安装(如果他们还没有的话),并且可以用一个按钮将它们全部安装。

https://code.visualstudio.com/docs/editor/extension-gallery#_workspace-recommended-extensions

共享扩展列表的更好方法是为同事创建基于工作空间的扩展集。

在通过code --list-extensions | xargs -L 1 echo code --install-extension生成扩展列表后(在运行代码命令之前,检查$PATH包含Visual Studio Code条目C:\Program Files\Microsoft VS Code\bin\),运行Extensions: Configure Recommended Extensions (Workspace Folder) Visual Studio Code命令(Ctrl + 转变 + P),并将扩展放入生成的.vscode/extensions.json文件中:

{
"recommendations": [
"eg2.tslint",
"dbaeumer.vscode-eslint",
"msjsdiag.debugger-for-chrome"
]
}

对于那些想知道如何将扩展从Visual Studio Code复制到Visual Studio Code内部的人,可以使用本尼的回答的修改:

code --list-extensions | xargs -L 1 echo code-insiders --install-extension
  1. < p > # EYZ0

  2. < p > # EYZ0

  3. 复制list文件的内容,并添加到"recommendations"节中的.vscode/extensions.json文件。

  4. 如果extensions.json不存在,那么创建一个包含以下内容的文件

    {
    "recommendations": [
    // Add content of file list here
    ]
    }
    
  5. 共享extensions.json文件,并请求其他用户添加到.vscode文件夹。Visual Studio Code将提示安装扩展。

Linux

机器上:

code --list-extensions > vscode-extensions.list

机器上:

cat vscode-extensions.list | xargs -L 1 code --install-extension

转储扩展:

code --list-extensions > extensions.txt

使用Bash (Linux, OS X和WSL)安装扩展:

cat extensions.txt | xargs code --list-extensions {}

在Windows上使用PowerShell安装扩展:

cat extensions.txt |% { code --install-extension $_}

如何从终端导出Visual Studio Code扩展。这是钱。也许这能帮到别人。

如何从终端导出您的Visual Studio Code扩展

备注: 类unix系统 only。

  1. 导出你的扩展到一个shell文件:
code --list-extensions | sed -e 's/^/code --install-extension /' > my_vscode_extensions.sh
  1. 验证您的扩展安装文件:
less my_vscode_extesions.sh

安装扩展(可选)

使用Bash命令运行my_vscode_extensions.sh:

bash my_vscode_extensions.sh

如果你想转移所有的扩展从codecode-insiders或反之亦然,这里是什么为我从Git Bash

code --list-extensions | xargs -L 1 code-insiders --install-extension

这将安装所有缺少的扩展,并跳过已安装的扩展。在此之后,您将需要关闭并重新打开Visual Studio Code。

类似地,你可以通过以下方法将扩展名从code-insiders转移到code:

code-insiders --list-extensions | xargs -L 1 code --install-extension

在windows下,我通常需要运行

cd C:\Program Files\Microsoft VS Code\bin
code.cmd --list-extensions

你不做的是运行Code .exe直接在C:\Program Files\Microsoft VS Code\

如果使用bash,可以使用以下命令:

出口扩展

code --list-extensions |
xargs -L 1 echo code --install-extension |
sed 's/$/ --force/' |
sed '$!s/$/ \&/' > install-extensions.sh

使用bash别名:

# eve - export vscode extensions
alias eve="code --list-extensions |
xargs -L 1 echo code --install-extension |
sed 's/$/ --force/' |
sed '\$!s/$/ \&/' > install-extensions.sh"

只需运行eve

安装扩展

sh install-extensions.sh

现在有一个功能仍在预览中,允许你用微软或GitHub帐户登录,并在没有任何额外扩展的情况下同步你的设置。这非常简单直接。你可以了解更多在这里

可以同步的东西

在Windows上,使用powershell脚本。这将返回一个“友好的名字”;它更好地反映了名称,因为它将出现在Visual Studio Code UI中(code --list-extensions没有做到):

<#
.SYNOPSIS
Lists installed Visual Studio Code Extensions in a friendly format.


.DESCRIPTION
Lists installed Visual Studio Code Extensions in a friendly format.
    

.INPUTS
None. You cannot pipe objects to this.


.OUTPUTS
A list of installed Visual Studio Code Extensions in a friendly format.


.EXAMPLE
PS> .\List-Extensions.ps1


.NOTES
Author: John Bentley
Version: 2022-07-11 18:55
Latest at: [How can you export the Visual Studio Code extension list?
> John Bentley's Answer]
(https://stackoverflow.com/a/72929878/872154)
#>


# Change to your directory
$packages = Get-ChildItem C:/Users/John/.vscode/extensions/*/package.json


Function Out-JsonItem($File) {
$json = Get-Content $File | ConvertFrom-Json
$extensionMetaData = [PSCustomObject]@{


# This is the name that appears in the Visual Studio Code UI,
# Extensions Tab
FriendlyName =
if ($json.displayName) { $json.displayName } else { $json.name }
      

# Name = $json.name
PublisherAndName = $json.publisher + '.' + $json.name


Description = $json.description
}
return $extensionMetaData
}


$extensions = ($packages | ForEach-Object { Out-JsonItem -File $_ })


$extensions.GetEnumerator() | Sort-Object {$_.FriendlyName}


# Alternate sorting (Same order as `code --list-extensions`).
# $extensions.GetEnumerator() | Sort-Object {$_.PublisherAndName}

示例输出:

FriendlyName                             PublisherAndName
------------                             ----------------
[Deprecated] Debugger for Chrome         msjsdiag.debugger-for-chrome
%displayName%                            ms-vscode-remote.remote-wsl
Apache Conf                              mrmlnc.vscode-apache
Apache Conf Snippets                     eiminsasete.apacheconf-snippets
Auto Close Tag                           formulahendry.auto-close-tag
Beautify                                 HookyQR.beautify
Blank Line Organizer                     rintoj.blank-line-organizer
change-case                              wmaurer.change-case
Character Count                          stevensona.character-count
...
Word Count                               ms-vscode.wordcount
Word Count                               OliverKovacs.word-count
XML                                      redhat.vscode-xml
XML Tools                                DotJoshJohnson.xml
XML Tools                                qub.qub-xml-vscode
XPath Notebook for Visual Studio Code    deltaxml.xpath-notebook
XSLT/XPath for Visual Studio Code        deltaxml.xslt-xpath

产品说明:

  • 复制脚本代码并将其保存到某个位置的List-Extensions.ps1文件中(仅限Windows)。
  • 更改行$packages = Get-ChildItem C:/Users/John/.vscode/extensions/*/package.json以指向您的目录(更改用户名)。
  • 在您保存List-Extensions.ps1的目录下打开Windows终端(这里可以使用Set-Location命令)。
  • 使用.\List-Extensions.ps1从Windows终端运行脚本

# EYZ1比;# EYZ2比;打开设置同步将在不同的设备上同步VS Code设置。