Saltar al contenido

¿Cómo administrar ASP.NET Core bundleconfig.json para múltiples entornos?

Solución:

Creo que encontré mi respuesta. Estaba a punto de crear un ayudante HTML para leer el bundleconfig.json para el entorno de desarrollo, pero parece que no soy el primero en pensar que fue una buena idea. Tenga en cuenta que la implementación de .NET Core está vinculada en la parte inferior de la página.

https://github.com/madskristensen/BundlerMinifier/wiki/Unbundling-scripts-for-debugging

Editar

Para la implementación de .NET Core, la referencia al bundleconfig.json esperaba que estuviera en una carpeta / Configs, que puede ser o no el caso de su proyecto. Para mí, lo acabo de tener en la raíz del proyecto.

Editar

Entonces esto no funciona si los archivos fuente están fuera de la carpeta wwwroot. Tener archivos fuera de la carpeta wwwroot es completamente razonable, por lo que estoy investigando que el ayudante html apunte a una ruta que transmitirá los archivos en modo de depuración

Solución posible

Aquí está mi evolución de la solución:

https://gist.github.com/rupe120/512a9eb837383963f80fd9ef4984eb15

Actualizar

Modifiqué mi solución para usar {*filePath} en la definición de ruta, por lo que ahora no es necesario codificar la ruta

Actualizar

Creo que esta es la última actualización importante que haré. Reemplacé la cadena de ruta base estática con el outputFileName valores de la bundleconfig.json. Así que ahora hay tantas rutas de depuración como archivos minificados y sin miedo a las colisiones de nombres. Además, puede ver qué archivos están incluidos en qué paquete cuando está depurando, lo que creo que es bastante bueno.

No llamaría a esto exactamente una mejor práctica, pero lo siguiente funciona para mí.

En el bundleconfig.json Preparo un paquete para el desarrollo y otro para la producción. El paquete para el desarrollo es solo texto concatenado, que es fácil de leer y depurar. El paquete para la producción está reducido y, opcionalmente, puede incluir un mapa de origen.

{
    "outputFileName": "wwwroot/script.bundle.js",
    "inputFiles": [
      "wwwroot/node_modules/popper.js/dist/umd/popper.js",
      "wwwroot/node_modules/jquery/dist/jquery.js",
      "wwwroot/node_modules/bootstrap/dist/js/bootstrap.js"
    ],
    "minify": {
      "enabled": false,
      "renameLocals": false
    }
  },
  {
    "outputFileName": "wwwroot/script.min.js",
    "inputFiles": [
      "wwwroot/script.bundle.js"
    ],
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    // Optionally generate .map file
    "sourceMap": false
  }

El punto es que el paquete de producción usa solo el paquete de desarrollo. De esa forma tengo que mantener una sola lista.

En la página, donde se necesita JS, agrego etiquetas para dos paquetes.

<environment include="Development">
    <script src="https://foroayuda.es/script.bundle.js" type="text/javascript"></script>
</environment>
<environment exclude="Development">
    <script src="script.min.js" type="text/javascript"></script>
</environment>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *