node - Tipo de proyecto de JavaScript para Visual Studio?
visual studio code node js extensions (4)
Tengo una tarea que implica la creación de una biblioteca de JavaScript que luego será utilizada por múltiples proyectos en una solución de Visual Studio. Idealmente, me gustaría encontrar un tipo de proyecto que, para mi código JavaScript, se comporte como si fuera una biblioteca de clase C #, es decir:
- Sería "compilar" (minify, check by Closure, ...) el código JavaScript en algún archivo de salida **. Js *
- Esta salida podría ser "referenciada" por otros proyectos, por ejemplo, por un proyecto ASP.NET MVC
- Podría especificar un "orden de compilación" de mis proyectos (función VS estándar)
¿Es esto posible con VS 2010/11 o debo escribir algunos archivos BAT / PowerShell y escribirlos yo mismo?
Pregunta similar pero ligeramente diferente: ¿ Plantilla de Visual Studio Project para JavaScript / VBScript?
¡Tengo mucha curiosidad por esto! Por favor, comenten @ si alguien viene con otras / mejores ideas.
Opción 1: proyecto web ASP.NET con Web Essentials
Si solo desea un proyecto de JavaScript de interfaz, esta es una opción fácil. Web Essentials es fácil de usar e instalar en Visual Studio. Puedes usar esto para una fácil minificación. Entonces puedes usar Qunit para probar. Este es un punto de entrada bastante fácil y ligero en el desarrollo del lado del cliente de JavaScript.
Opción 2: Herramientas de Node.js para Visual Studio
Use las herramientas Node.js para Visual Studio . Le dará plantillas de proyectos para muchas de estas cosas buenas. Puede que no termine usando node.js especialmente si solo está creando una biblioteca js del lado del cliente, pero tener node.js es útil para probar y querrá / necesitará npm para instalar todas las otras cosas buenas mencionadas en mi respuesta original ( Opción 3).
Hay una gran cantidad de configuración involucrada con este. Puede ser una barrera de entrada para algunos desarrolladores de .NET.
Opción 3: proyecto de sitio web
Esto es lo que hice en el pasado:
¡De hecho, creé este proyecto en Eclipse! (No me odies) Más tarde creé una solución de Visual Studio con un proyecto de sitio web . Instalé node.js, que ciertamente no es necesario, pero lo estaba usando como un servidor web liviano.
Luego puede usar Nuget o Bower para instalar otras cosas como:
- require.js para la gestión de módulos
- jazmín para pruebas unitarias
- gruñido o trago para construcciones (minificación)
- Puede instalar jslint o jshint para corregir el código.
No todas estas cosas son requeridas. Creo que Bower está integrado en Visual Studio 2015. Algunos de estos requerirán compilaciones de línea de comando, pero hay muy pocos comandos para ejecutar una vez que lo haya configurado.
Buena pregunta (+1). Mi decisión fue poner todos los archivos generales de javascript en un proyecto de javascript por separado y usar los archivos vinculados a los archivos js necesarios en el proyecto web / mvc.
De esta forma, tendrá la posibilidad de utilizar el control de subversión desde el lado del proyecto de JavaScript y compactar y combinar archivos js del lado de proyectos generales separados utilizando todas las herramientas disponibles.
Según mi experiencia en el desarrollo de Asp.Net MVC, Visual Studio tiene soporte limitado para JavaScript. Supongo que hay algo que puedes hacer para imitar el comportamiento que deseas:
Cree un proyecto para almacenar sus archivos JavaScript, tal vez un proyecto de biblioteca de clases que en realidad no importa, siempre y cuando admita Build Events. Coloque sus archivos de JavaScript dentro de un nuevo proyecto.
Cree un paso de compilación posterior en este proyecto para minimizar su JavaScript utilizando una herramienta externa. Yo uso YUI Compressor . El paso de compilación posterior debe contener líneas similares a las siguientes:
java -jar $ (ProjectDir) Scripts / yuicompressor-2.4.7.jar $ (SolutionDir) Scripts / yourJsFile.js -o $ (SolutionDir) Scripts / yourJsFile.min.js --charset utf-8
Incluye este nuevo proyecto en tu solución. Luego, para sus proyectos Asp.Net, configure sus páginas Active Server para que hagan referencia a los archivos JavaScript, y estoy usando la sintaxis Razor como ejemplo. Sin embargo, podría ser complicado especificar el camino correcto:
@if (@Model.IsDebug) { <script src="@Url.Content("~/Scripts/yourJsFile.js")" type="text/javascript"> </script> } else { <script src="@Url.Content("~/Scripts/yourJsFile.min.js")" type="text/javascript"></script> }
De nuevo, puede ser complicado asegurarse de que pueda hacer una referencia precisa de los archivos JavaScript desde su proyecto Asp.Net. Pero estoy seguro de que hay una forma de hacerlo. Tal vez pueda hacer que su paso posterior a la compilación copie los archivos JavaScript en alguna ubicación común. Si hace esto, también querrá marcar el evento de compilación posterior en su proyecto de JavaScript como "Ejecutar siempre", para que los archivos de JavaScript siempre se copien.
Si desea acceder a precompilación / pos-compilación (no es realmente necesario con el explorador de tareas del corredor), cree un proyecto ASP.net Core vacío (ocultará la carpeta node_modules y los archivos se incluirán automáticamente en el proyecto (simplemente copiándolos, no es necesario agregarlos manualmente). PERO, esto genera una carpeta obj y bin, que puede ser molesta. Una cosa buena aquí es que si construyes tu proyecto en la carpeta wwwfolder, puedes usar el comando de publicación de Visual Studio.
Si no te importa ninguno de los anteriores, un proyecto compartido de C # no genera resultados, por lo que es una buena plantilla para hacer un proyecto de javascript (lo uso para todos mis proyectos de spa vue). La desventaja aquí es que la anidación de archivos no funcionará = /