将 LibMan CLI 与 ASP.NET Core 结合使用Use the LibMan CLI with ASP.NET Core

本文内容

作者:Scott Addie

LibMan CLI 是一种跨平台工具,在所有支持的 .NET Core 的位置都可得到支持。

先决条件Prerequisites

安装Installation

安装 LibMan CLI:

  1. dotnet tool install -g Microsoft.Web.LibraryManager.Cli

Microsoft.Web.LibraryManager.Cli NuGet 包安装 .NET Core 全局工具

从特定 NuGet 包源安装 LibMan CLI:

  1. dotnet tool install -g Microsoft.Web.LibraryManager.Cli --version 1.0.94-g606058a278 --add-source C:\Temp\

在前面的示例中,从本地 Windows 计算机的 C:\Temp\Microsoft.Web.LibraryManager.Cli.1.0.94-g606058a278.nupkg 文件安装 .NET Core 全局工具。

用法Usage

成功安装 CLI 之后,可以使用以下命令:

  1. libman

查看已安装的 CLI 版本:

  1. libman --version

查看可用 CLI 命令:

  1. libman --help

前面的命令显示类似于以下内容的输出:

  1. 1.0.163+g45474d37ed
  2. Usage: libman [options] [command]
  3. Options:
  4. --help|-h Show help information
  5. --version Show version information
  6. Commands:
  7. cache List or clean libman cache contents
  8. clean Deletes all library files defined in libman.json from the project
  9. init Create a new libman.json
  10. install Add a library definition to the libman.json file, and download the
  11. library to the specified location
  12. restore Downloads all files from provider and saves them to specified
  13. destination
  14. uninstall Deletes all files for the specified library from their specified
  15. destination, then removes the specified library definition from
  16. libman.json
  17. update Updates the specified library
  18. Use "libman [command] --help" for more information about a command.

以下部分概述了可用的 CLI 命令。

在项目中初始化 LibManInitialize LibMan in the project

libman init 命令会创建一个 libman.json 文件(如果不存在)。该文件会使用默认项模板内容进行创建。

摘要Synopsis

  1. libman init [-d|--default-destination] [-p|--default-provider] [--verbosity]
  2. libman init [-h|--help]

选项Options

libman init 命令可以使用以下选项:

  • -d|—default-destination <PATH>

相对于当前文件夹的路径。如果未在 libman.json 中为库定义 destination 属性,则库文件会安装在此位置。<PATH> 值会写入 libman.json 的 defaultDestination 属性。

  • -p|—default-provider <PROVIDER>

未为给定库定义提供程序时要使用的提供程序。<PROVIDER> 值会写入 libman.json 的 defaultProvider 属性。将 <PROVIDER> 替换为以下值之一:

  • cdnjs
  • filesystem
  • jsdelivr
  • unpkg
  • -h|—help

显示帮助信息。

  • —verbosity <LEVEL>

设置输出的详细程度。将 <LEVEL> 替换为以下值之一:

  • quiet
  • normal
  • detailed

示例Examples

在 ASP.NET Core 项目中创建 libman.json 文件:

  • 导航到项目根。

  • 运行下面的命令:

  1. libman init
  • 键入默认提供程序的名称,或按 Enter 以使用默认 CDNJS 提供程序。有效值包括:

    • cdnjs
    • filesystem
    • jsdelivr
    • unpkg
      libman 初始化命令 - 默认提供程序

具有以下内容的 libman.json 文件会添加到项目根:

  1. {
  2. "version": "1.0",
  3. "defaultProvider": "cdnjs",
  4. "libraries": []
  5. }

添加库文件Add library files

libman install 命令会将库文件下载并安装到项目中。如果 libman.json 文件不存在,则会添加一个。libman.json 文件会进行修改,以存储库文件的配置详细信息。

摘要Synopsis

  1. libman install <LIBRARY> [-d|--destination] [--files] [-p|--provider] [--verbosity]
  2. libman install [-h|--help]

自变量Arguments

LIBRARY

要安装的库的名称。此名称可以包含版本号表示法(例如 @1.2.0)。

选项Options

libman install 命令可以使用以下选项:

  • -d|—destination <PATH>

用于安装库的位置。如果未指定,则使用默认位置。如果 libman.json 中未指定 defaultDestination 属性,则此选项是必需的。

  • —files <FILE>

指定要从库安装的文件的名称。如果未指定,则会安装库中的所有文件。为每个要安装的文件提供一个 —files 选项。也支持相对路径。例如:—files dist/browser/signalr.js

  • -p|—provider <PROVIDER>

用于库获取的提供程序的名称。将 <PROVIDER> 替换为以下值之一:

  • cdnjs
  • filesystem
  • jsdelivr
  • unpkg
    如果未指定,则使用 libman.json 中的 defaultProvider 属性。如果 libman.json 中未指定 defaultProvider 属性,则此选项是必需的。
  • -h|—help

显示帮助信息。

  • —verbosity <LEVEL>

设置输出的详细程度。将 <LEVEL> 替换为以下值之一:

  • quiet
  • normal
  • detailed

示例Examples

请考虑以下 libman.json 文件:

  1. {
  2. "version": "1.0",
  3. "defaultProvider": "cdnjs",
  4. "libraries": []
  5. }

使用 CDNJS 提供程序将 jQuery 版本 3.2.1 jquery.min.js 文件安装到 wwwroot/scripts/jquery 文件夹:

  1. libman install jquery@3.2.1 --provider cdnjs --destination wwwroot/scripts/jquery --files jquery.min.js

libman.json 文件类似于以下内容:

  1. {
  2. "version": "1.0",
  3. "defaultProvider": "cdnjs",
  4. "libraries": [
  5. {
  6. "library": "jquery@3.2.1",
  7. "destination": "wwwroot/scripts/jquery",
  8. "files": [
  9. "jquery.min.js"
  10. ]
  11. }
  12. ]
  13. }

使用文件系统提供程序从 C:\temp\contosoCalendar\ 安装 calendar.js 和 calendar.css :

  1. libman install C:\temp\contosoCalendar\ --provider filesystem --files calendar.js --files calendar.css

由于两个原因而出现以下提示:

  • libman.json 文件不包含 defaultDestination 属性。
  • libman install 命令不包含 -d|—destination 选项。

libman 安装命令 - 目标

接受默认目标之后,libman.json 文件类似于以下内容:

  1. {
  2. "version": "1.0",
  3. "defaultProvider": "cdnjs",
  4. "libraries": [
  5. {
  6. "library": "jquery@3.2.1",
  7. "destination": "wwwroot/scripts/jquery",
  8. "files": [
  9. "jquery.min.js"
  10. ]
  11. },
  12. {
  13. "library": "C:\\temp\\contosoCalendar\\",
  14. "provider": "filesystem",
  15. "destination": "wwwroot/lib/contosoCalendar",
  16. "files": [
  17. "calendar.js",
  18. "calendar.css"
  19. ]
  20. }
  21. ]
  22. }

还原库文件Restore library files

libman restore 命令安装在 libman.json 中定义的库文件。适用以下规则:

  • 如果项目根中不存在 libman.json 文件,则会返回错误。
  • 如果库指定了提供程序,则会忽略 libman.json 中的 defaultProvider 属性。
  • 如果库指定了目标,则会忽略 libman.json 中的 defaultDestination 属性。

摘要Synopsis

  1. libman restore [--verbosity]
  2. libman restore [-h|--help]

选项Options

libman restore 命令可以使用以下选项:

  • -h|—help

显示帮助信息。

  • —verbosity <LEVEL>

设置输出的详细程度。将 <LEVEL> 替换为以下值之一:

  • quiet
  • normal
  • detailed

示例Examples

还原在 libman.json 中定义的库文件:

  1. libman restore

删除库文件Delete library files

libman clean 命令会删除之前通过 LibMan 还原的库文件。在此操作之后成为空的文件夹会删除。libman.json 的 libraries 属性中库文件的关联配置不会删除。

摘要Synopsis

  1. libman clean [--verbosity]
  2. libman clean [-h|--help]

选项Options

libman clean 命令可以使用以下选项:

  • -h|—help

显示帮助信息。

  • —verbosity <LEVEL>

设置输出的详细程度。将 <LEVEL> 替换为以下值之一:

  • quiet
  • normal
  • detailed

示例Examples

删除通过 LibMan 安装的库文件:

  1. libman clean

卸载库文件Uninstall library files

libman uninstall 命令:

  • 从 libman.json 中的目标删除与指定库关联的所有文件。
  • 从 libman.json 中删除关联库配置。

在下述情况中会发生错误:

  • 项目根中不存在 libman.json 文件。
  • 指定库不存在。

如果安装了多个具有相同名称的库,则系统会提示选择一个。

摘要Synopsis

  1. libman uninstall <LIBRARY> [--verbosity]
  2. libman uninstall [-h|--help]

自变量Arguments

LIBRARY

要卸载的库的名称。此名称可以包含版本号表示法(例如 @1.2.0)。

选项Options

libman uninstall 命令可以使用以下选项:

  • -h|—help

显示帮助信息。

  • —verbosity <LEVEL>

设置输出的详细程度。将 <LEVEL> 替换为以下值之一:

  • quiet
  • normal
  • detailed

示例Examples

请考虑以下 libman.json 文件:

  1. {
  2. "version": "1.0",
  3. "defaultProvider": "cdnjs",
  4. "libraries": [
  5. {
  6. "library": "jquery@3.3.1",
  7. "files": [
  8. "jquery.min.js",
  9. "jquery.js",
  10. "jquery.min.map"
  11. ],
  12. "destination": "wwwroot/lib/jquery/"
  13. },
  14. {
  15. "provider": "unpkg",
  16. "library": "bootstrap@4.1.3",
  17. "destination": "wwwroot/lib/bootstrap/"
  18. },
  19. {
  20. "provider": "filesystem",
  21. "library": "C:\\temp\\lodash\\",
  22. "files": [
  23. "lodash.js",
  24. "lodash.min.js"
  25. ],
  26. "destination": "wwwroot/lib/lodash/"
  27. }
  28. ]
  29. }
  • 若要卸载 jQuery,以下任一命令都会成功:
  1. libman uninstall jquery
  1. libman uninstall jquery@3.3.1
  • 卸载通过 filesystem 提供程序安装的 Lodash 文件:
  1. libman uninstall C:\temp\lodash\

更新库版本Update library version

libman update 命令会将通过 LibMan 安装的库更新为指定版本。

在下述情况中会发生错误:

  • 项目根中不存在 libman.json 文件。
  • 指定库不存在。

如果安装了多个具有相同名称的库,则系统会提示选择一个。

摘要Synopsis

  1. libman update <LIBRARY> [-pre] [--to] [--verbosity]
  2. libman update [-h|--help]

自变量Arguments

LIBRARY

要更新的库的名称。

选项Options

libman update 命令可以使用以下选项:

  • -pre

获取库的最新预发行版本。

  • —to <VERSION>

获取库的特定版本。

  • -h|—help

显示帮助信息。

  • —verbosity <LEVEL>

设置输出的详细程度。将 <LEVEL> 替换为以下值之一:

  • quiet
  • normal
  • detailed

示例Examples

  • 将 jQuery 更新为最新版本:
  1. libman update jquery
  • 将 jQuery 更新为版本 3.3.1:
  1. libman update jquery --to 3.3.1
  • 将 jQuery 更新为最新预发行版本:
  1. libman update jquery -pre

管理库缓存Manage library cache

libman cache 命令会管理 LibMan 库缓存。filesystem 提供程序不使用库缓存。

摘要Synopsis

  1. libman cache clean [<PROVIDER>] [--verbosity]
  2. libman cache list [--files] [--libraries] [--verbosity]
  3. libman cache [-h|--help]

自变量Arguments

PROVIDER

仅与 clean 命令一起使用。指定要清除的提供程序缓存。有效值包括:

  • cdnjs
  • filesystem
  • jsdelivr
  • unpkg

选项Options

libman cache 命令可以使用以下选项:

  • —files

列出缓存的文件的名称。

  • —libraries

列出缓存的库的名称。

  • -h|—help

显示帮助信息。

  • —verbosity <LEVEL>

设置输出的详细程度。将 <LEVEL> 替换为以下值之一:

  • quiet
  • normal
  • detailed

示例Examples

  • 若要查看每个提供程序的缓存库的名称,请使用以下命令之一:
  1. libman cache list
  1. libman cache list --libraries

显示了类似下面的输出:

  1. Cache contents:

unpkg:
knockout
react
vue
cdnjs:
font-awesome
jquery
knockout
lodash.js
react

  • 查看每个提供程序的缓存库文件的名称:
  1. libman cache list --files

显示了类似下面的输出:

  1. Cache contents:

unpkg:
knockout:
<list omitted for brevity>
react:
<list omitted for brevity>
vue:
<list omitted for brevity>
cdnjs:
font-awesome
metadata.json
jquery
metadata.json
3.2.1\core.js
3.2.1\jquery.js
3.2.1\jquery.min.js
3.2.1\jquery.min.map
3.2.1\jquery.slim.js
3.2.1\jquery.slim.min.js
3.2.1\jquery.slim.min.map
3.3.1\core.js
3.3.1\jquery.js
3.3.1\jquery.min.js
3.3.1\jquery.min.map
3.3.1\jquery.slim.js
3.3.1\jquery.slim.min.js
3.3.1\jquery.slim.min.map
knockout
metadata.json
3.4.2\knockout-debug.js
3.4.2\knockout-min.js
lodash.js
metadata.json
4.17.10\lodash.js
4.17.10\lodash.min.js
react
metadata.json

请注意,前面的输出显示,jQuery 版本3.2.1 和3.3.1 缓存在 CDNJS 提供程序下。

  • 清空 CDNJS 提供程序的库缓存:
  1. libman cache clean cdnjs

清空 CDNJS 提供程序缓存之后,libman cache list 命令会显示以下内容:

  1. Cache contents:

unpkg:
knockout
react
vue
cdnjs:
(empty)

  • 为所有支持的提供程序清空缓存:
  1. libman cache clean

清空所有提供程序缓存之后,libman cache list 命令会显示以下内容:

  1. Cache contents:

unpkg:
(empty)
cdnjs:
(empty)

其他资源Additional resources