什么是 Libman
微软在 Visual Studio 2017 15.8 版本中内嵌了一个新的工具 Library Manager.
Library Manager(简称 Libman) 是一个客户端库管理工具, 使用它可以很容易的管理项目中使用的客户端 JS 库, CSS 库等, Libman 相当于一个针对客户端库的 Nuget, 而且 Libman 并不是指针对. NET 项目的, 非. NET 项目也可以使用.
注意: 这个工具暂时只是一个实验阶段的工具.
如何使用 Libman
下面我们来通过一个小例子演示一下如何使用 Libman
添加项目
为了体现 Libman 并不只针对. NET 项目, 我们创建一个空文件夹 Code, 并在其中创建一个名为 libs 的子目录, 并使用 Visual Studio 2017 以 website 的方式打开它
然后我们可以右键点击 code 站点, 选择 Manage Client-Side Library
点击之后, code 目录中就会生成一个 libman.JSON 文件, libman.JSON 是 Libman 的配置文件, 其默认内容如下
- {
- "version": "1.0",
- "defaultProvider": "cdnjs",
- "libraries": []
- }
libman.JSON 中的配置项
defaultProvider
这个参数指定了默认使用客户端库的来源, Libman 提供了 3 种可选的来源.
cdnjs - 默认来源
filesystem - 来自本地文件
unpkg - 一个全球 cdn
defaultDestination
客户端库的默认存储位置
libraries
客户端库列表
添加 jQuery 3.3.1
下面我们修改 libraries 节点中, 添加对 jQuery 3.3.1 的引用
- {
- "version": "1.0",
- "defaultProvider": "cdnjs",
- "libraries": [
- {
- "library": "jquery@3.3.1",
- "destination": "libs/jQuery_3.3.1",
- "provider": "cdnjs"
- }
- ]
- }
library - 客户端库的名称, 格式是 "包名 @版本号"
destination - 客户端库在当前项目中的存储位置
provider - 客户端库的来源
这里如果你不是粘贴代码话, 手动输入会出现代码提示, Visual Studio 会根据你的输入匹配最接近的包名并列出所有可用的版本.
手动恢复客户端库
修改完成后, 我们右键点击 libman.JSON, 选择 Restore Client-Side Libraries
我们所需的客户端库就自动下载并导入到项目指定目录中了.
Build 时自动恢复客户端库
除了手动恢复客户端库, Visual Studio 还提供了一个 Enable Restore Client-Side Libraries on Build 的选项, 即项目 Build 时自动恢复所需的客户端库.
选择该项之后, Visual Studio 会弹出一下提示
点击确认之后, 项目中会出现一个 package.JSON, 里面添加了对 Microsoft.Web.LibraryManager.Build 库的引用
- <?xml version="1.0" encoding="utf-8"?>
- <packages>
- <package id="Microsoft.Web.LibraryManager.Build" version="1.0.163" targetFramework="net40" />
- </packages>
如果当前是一个. NET 项目, 这个引用会出现在 csproj 文件中
- <Project Sdk="Microsoft.NET.Sdk.Web">
- <PropertyGroup>
- <TargetFramework>netcoreapp2.1</TargetFramework>
- </PropertyGroup>
- <ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.App" />
- <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.163" />
- </ItemGroup>
- </Project>
总结
Libman 是对 Visual Studio 很好的补充 (之前大部分都是使用 bower 等类似组件来管理), 它可以帮助开发人员管理客户端库, 避免了开发人员手动下载并引入客户端库造成混乱, 有兴趣的同学可以尝试一下.
来源: https://www.cnblogs.com/lwqlun/p/9850261.html