Uso de la CLI de LibMan con ASP.NET Core

Library Manager (LibMan) es una herramienta ligera para la adquisición de bibliotecas del lado cliente. Asimismo, LibMan permite descargar bibliotecas y marcos populares de sistemas de archivos o redes de entrega de contenido (CDN). Entre las CDN admitidas se incluyen CDNJS, jsDelivr y unpkg. Los archivos de biblioteca seleccionados se capturan y se colocan en la ubicación adecuada dentro del proyecto de ASP.NET Core.

Requisitos previos

Instalación

El siguiente comando instala LibMan:

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

Nota:

De manera predeterminada, la arquitectura de los binarios .NET que se van a instalar representa la arquitectura del sistema operativo que se está ejecutando en ese momento. Para especificar una arquitectura de SO diferente, consulte dotnet tool install, --arch option. Para más información, consulte la incidencia de GitHub dotnet/AspNetCore.Docs #29262.

Se instala una herramienta global de .NET Core desde el paquete NuGet Microsoft.Web.LibraryManager.Cli.

Uso

libman

Para ver la versión de LibMan instalada:

libman --version

Para ver los comandos disponibles de la CLI:

libman --help

El comando anterior muestra una salida similar a la siguiente:

 1.0.163+g45474d37ed

Usage: libman [options] [command]

Options:
  --help|-h  Show help information
  --version  Show version information

Commands:
  cache      List or clean libman cache contents
  clean      Deletes all library files defined in libman.json from the project
  init       Create a new libman.json
  install    Add a library definition to the libman.json file, and download the 
             library to the specified location
  restore    Downloads all files from provider and saves them to specified 
             destination
  uninstall  Deletes all files for the specified library from their specified 
             destination, then removes the specified library definition from 
             libman.json
  update     Updates the specified library

Use "libman [command] --help" for more information about a command.

En las secciones siguientes se describen los comandos disponibles de la CLI.

Inicialización de LibMan en el proyecto

El comando libman init crea un archivo libman.json si no existe ninguno. El archivo se crea con el contenido de la plantilla de elemento predeterminado.

Sinopsis

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

Opciones

Las siguientes opciones están disponibles para el comando libman init:

  • -d|--default-destination <PATH>

    Ruta de acceso relativa a la carpeta actual. Los archivos de biblioteca se instalan en esta ubicación si no se ha definido ninguna propiedad destination para una biblioteca en libman.json. El valor <PATH> se escribe en la propiedad defaultDestination de libman.json.

  • -p|--default-provider <PROVIDER>

    Proveedor que se va a usar si no hay ninguno definido en una biblioteca dada. El valor <PROVIDER> se escribe en la propiedad defaultProvider de libman.json. Reemplace <PROVIDER> con uno de los siguientes valores:

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

    Muestra información de ayuda.

  • --verbosity <LEVEL>

    Establece el nivel de detalle del resultado. Reemplace <LEVEL> con uno de los siguientes valores:

    • quiet
    • normal
    • detailed

Ejemplos

Para crear un archivo libman.json en un proyecto de ASP.NET Core:

  • Vaya a la raíz del proyecto.

  • Ejecute el siguiente comando:

    libman init
    
  • Escriba el nombre del proveedor predeterminado o presione Enter para usar el proveedor CDNJS predeterminado. Los valores válidos son:

    • cdnjs
    • filesystem
    • jsdelivr
    • unpkg

    libman init command - default provider

Se agrega un archivo libman.json a la raíz del proyecto con el siguiente contenido:

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": []
}

Adición de archivos de biblioteca

El comando libman install descarga e instala los archivos de biblioteca en el proyecto. Se agrega un archivo libman.json si no existe ninguno. El archivo libman.json se modifica para almacenar los detalles de configuración de los archivos de biblioteca.

Sinopsis

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

Argumentos

LIBRARY

Nombre de la biblioteca que se va a instalar. Este nombre puede incluir la notación del número de versión (por ejemplo, @1.2.0).

Opciones

Las siguientes opciones están disponibles para el comando libman install:

  • -d|--destination <PATH>

    Ubicación en la que se va a instalar la biblioteca. Si no se especifica, se usa la ubicación predeterminada. Si no se especifica ninguna propiedad defaultDestination en libman.json, esta opción es obligatoria.

    Nota: Existen limitaciones en la ruta de acceso de destino. Por ejemplo, cuando el origen del paquete tiene una estructura de proyecto completa y no solo la carpeta de distribución, no puede especificar mover una carpeta. Para más información, consulte Incidencia n.º 407 e Incidencia n.º 702

  • --files <FILE>

    Especifique el nombre del archivo de la biblioteca que se va a instalar. Si no se especifica, se instalan todos los archivos de la biblioteca. Proporcione una opción --files por cada archivo que se va a instalar. También se admiten las rutas de acceso relativas. Por ejemplo: --files dist/browser/signalr.js.

  • -p|--provider <PROVIDER>

    Nombre del proveedor que se va a usar en la adquisición de la biblioteca. Reemplace <PROVIDER> con uno de los siguientes valores:

    • cdnjs
    • filesystem
    • jsdelivr
    • unpkg

    Si no se especifica, se usa la propiedad defaultProvider de libman.json. Si no se especifica ninguna propiedad defaultProvider en libman.json, esta opción es obligatoria.

  • -h|--help

    Muestra información de ayuda.

  • --verbosity <LEVEL>

    Establece el nivel de detalle del resultado. Reemplace <LEVEL> con uno de los siguientes valores:

    • quiet
    • normal
    • detailed

Ejemplos

Fíjese en el siguiente archivo libman.json :

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": []
}

Para instalar el archivo jquery.min.js de la versión 3.2.1 de jQuery en la carpeta wwwroot/scripts/jquery mediante el proveedor CDNJS:

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

El archivo libman.json es similar a lo siguiente:

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "jquery@3.2.1",
      "destination": "wwwroot/scripts/jquery",
      "files": [
        "jquery.min.js"
      ]
    }
  ]
}

Para instalar los archivos calendar.js y calendar.css desde C:\temp\contosoCalendar\ mediante el proveedor del sistema de archivos:

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

El siguiente aviso aparece por dos motivos:

  • El archivo libman.json no contiene una propiedad defaultDestination.
  • El comando libman install no contiene la opción -d|--destination.

libman install command - destination

Después de aceptar el destino predeterminado, el archivo libman.json es similar al siguiente:

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "jquery@3.2.1",
      "destination": "wwwroot/scripts/jquery",
      "files": [
        "jquery.min.js"
      ]
    },
    {
      "library": "C:\\temp\\contosoCalendar\\",
      "provider": "filesystem",
      "destination": "wwwroot/lib/contosoCalendar",
      "files": [
        "calendar.js",
        "calendar.css"
      ]
    }
  ]
}

Restauración de archivos de biblioteca

El comando libman restore instala los archivos de biblioteca definidos en libman.json. Se aplican las reglas siguientes:

  • Si no existe ningún archivo libman.json en la raíz del proyecto, se devuelve un error.
  • Si una biblioteca especifica un proveedor, se omite la propiedad defaultProvider de libman.json.
  • Si una biblioteca especifica un destino, se omite la propiedad defaultDestination de libman.json.

Sinopsis

libman restore [--verbosity]
libman restore [-h|--help]

Opciones

Las siguientes opciones están disponibles para el comando libman restore:

  • -h|--help

    Muestra información de ayuda.

  • --verbosity <LEVEL>

    Establece el nivel de detalle del resultado. Reemplace <LEVEL> con uno de los siguientes valores:

    • quiet
    • normal
    • detailed

Ejemplos

Para restaurar los archivos de biblioteca definidos en libman.json:

libman restore

Eliminación de archivos de biblioteca

El comando libman clean elimina los archivos de biblioteca restaurados previamente mediante LibMan. Se eliminan todas las carpetas que queden vacías después de esta operación. No se eliminan las configuraciones asociadas de los archivos de biblioteca de la propiedad libraries de libman.json.

Sinopsis

libman clean [--verbosity]
libman clean [-h|--help]

Opciones

Las siguientes opciones están disponibles para el comando libman clean:

  • -h|--help

    Muestra información de ayuda.

  • --verbosity <LEVEL>

    Establece el nivel de detalle del resultado. Reemplace <LEVEL> con uno de los siguientes valores:

    • quiet
    • normal
    • detailed

Ejemplos

Para eliminar archivos de biblioteca instalados mediante LibMan:

libman clean

Desinstalación de archivos de biblioteca

El comando libman uninstall:

  • Elimina todos los archivos asociados a la biblioteca especificada del destino en libman.json.
  • Quita la configuración de biblioteca asociada de libman.json.

Se produce un error si:

  • No existe ningún archivo libman.json en la raíz del proyecto.
  • La biblioteca especificada no existe.

Si hay más de una biblioteca con el mismo nombre instalada, se le pedirá que elija una.

Sinopsis

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

Argumentos

LIBRARY

Nombre de la biblioteca que se va a desinstalar. Este nombre puede incluir la notación del número de versión (por ejemplo, @1.2.0).

Opciones

Las siguientes opciones están disponibles para el comando libman uninstall:

  • -h|--help

    Muestra información de ayuda.

  • --verbosity <LEVEL>

    Establece el nivel de detalle del resultado. Reemplace <LEVEL> con uno de los siguientes valores:

    • quiet
    • normal
    • detailed

Ejemplos

Fíjese en el siguiente archivo libman.json :

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "jquery@3.3.1",
      "files": [
        "jquery.min.js",
        "jquery.js",
        "jquery.min.map"
      ],
      "destination": "wwwroot/lib/jquery/"
    },
    {
      "provider": "unpkg",
      "library": "bootstrap@4.1.3",
      "destination": "wwwroot/lib/bootstrap/"
    },
    {
      "provider": "filesystem",
      "library": "C:\\temp\\lodash\\",
      "files": [
        "lodash.js",
        "lodash.min.js"
      ],
      "destination": "wwwroot/lib/lodash/"
    }
  ]
}
  • Para desinstalar jQuery, puede usar cualquiera de los siguientes comandos:

    libman uninstall jquery
    
    libman uninstall jquery@3.3.1
    
  • Para desinstalar los archivos Lodash instalados mediante el proveedor filesystem:

    libman uninstall C:\temp\lodash\
    

Actualización de la versión de la biblioteca

El comando libman update actualiza una biblioteca instalada mediante LibMan a la versión especificada.

Se produce un error si:

  • No existe ningún archivo libman.json en la raíz del proyecto.
  • La biblioteca especificada no existe.

Si hay más de una biblioteca con el mismo nombre instalada, se le pedirá que elija una.

Sinopsis

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

Argumentos

LIBRARY

Nombre de la biblioteca que se va a actualizar.

Opciones

Las siguientes opciones están disponibles para el comando libman update:

  • -pre

    Obtenga la versión preliminar más reciente de la biblioteca.

  • --to <VERSION>

    Obtenga una versión específica de la biblioteca.

  • -h|--help

    Muestra información de ayuda.

  • --verbosity <LEVEL>

    Establece el nivel de detalle del resultado. Reemplace <LEVEL> con uno de los siguientes valores:

    • quiet
    • normal
    • detailed

Ejemplos

  • Para actualizar jQuery a la versión más reciente:

    libman update jquery
    
  • Para actualizar JQuery a la versión 3.3.1:

    libman update jquery --to 3.3.1
    
  • Para actualizar jQuery a la versión preliminar más reciente:

    libman update jquery -pre
    

Administración de la memoria caché de la biblioteca

El comando libman cache administra la memoria caché de la biblioteca LibMan. El proveedor filesystem no usa la memoria caché de la biblioteca.

Sinopsis

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

Argumentos

PROVIDER

Solo se usa con el comando clean. Especifica la memoria caché del proveedor que se va a limpiar. Los valores válidos son:

  • cdnjs
  • filesystem
  • jsdelivr
  • unpkg

Opciones

Las siguientes opciones están disponibles para el comando libman cache:

  • --files

    Enumera los nombres de los archivos que se almacenan en la memoria caché.

  • --libraries

    Enumera los nombres de las bibliotecas que se almacenan en la memoria caché.

  • -h|--help

    Muestra información de ayuda.

  • --verbosity <LEVEL>

    Establece el nivel de detalle del resultado. Reemplace <LEVEL> con uno de los siguientes valores:

    • quiet
    • normal
    • detailed

Ejemplos

  • Para ver los nombres de las bibliotecas almacenadas en la memoria caché por proveedor, use uno de los siguientes comandos:

    libman cache list
    
    libman cache list --libraries
    

    Esto genera una salida similar a la siguiente:

    Cache contents:
    ---------------
    unpkg:
        knockout
        react
        vue
    cdnjs:
        font-awesome
        jquery
        knockout
        lodash.js
        react
    
  • Para ver los nombres de los archivos de biblioteca almacenados en la memoria caché por proveedor:

    libman cache list --files
    

    Esto genera una salida similar a la siguiente:

    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
    

    Observe que la salida anterior muestra que las versiones 3.2.1 y 3.3.1 de jQuery están almacenadas en la memoria caché en el proveedor CDNJS.

  • Para vaciar la memoria caché de la biblioteca del proveedor CDNJS:

    libman cache clean cdnjs
    

    Después de vaciar la memoria caché del proveedor CDNJS, el comando libman cache list muestra lo siguiente:

    Cache contents:
    ---------------
    unpkg:
        knockout
        react
        vue
    cdnjs:
        (empty)
    
  • Para vaciar la memoria caché de todos los proveedores admitidos:

    libman cache clean
    

    Después de vaciar la memoria caché de todos los proveedores, el comando libman cache list muestra lo siguiente:

    Cache contents:
    ---------------
    unpkg:
        (empty)
    cdnjs:
        (empty)
    

Recursos adicionales