Hay un tutorial de inicio rápido en angular.io que usa mecanografiado y systemjs. Ahora que tengo esa miniapp ejecutándose, ¿cómo haría para crear algo desplegable? No pude encontrar ninguna información al respecto.
¿Necesito herramientas adicionales, alguna configuración adicional en System.config?
(Sé que podría usar webpack y crear un solo bundle.js, pero me gustaría usar systemjs como se usa en el tutorial)
¿Alguien podría compartir su proceso de compilación con esta configuración (Angular 2, TypeScript, systemjs)
typescript
angular
systemjs
Brian G. Bell
fuente
fuente
Respuestas:
La clave para entender en este nivel es que usando la siguiente configuración, no puede concatizar archivos JS compilados directamente.
En la configuración del compilador de TypeScript:
En el HTML
De hecho, estos archivos JS contendrán módulos anónimos. Un módulo anónimo es un archivo JS que usa
System.register
pero sin el nombre del módulo como primer parámetro. Esto es lo que genera el compilador mecanografiado de forma predeterminada cuando systemjs está configurado como administrador de módulos.Entonces, para tener todos sus módulos en un solo archivo JS, debe aprovechar la
outFile
propiedad dentro de la configuración del compilador de TypeScript.Puede usar el siguiente trago interno para hacer eso:
Esto podría combinarse con algún otro procesamiento:
app.js
archivovendor.js
archivo para bibliotecas de tercerosboot.js
archivo para importar el módulo que arranca la aplicación. Este archivo debe incluirse al final de la página (cuando toda la página está cargada).index.html
tener en cuenta estos dos archivosLas siguientes dependencias se utilizan en las tareas de gulp:
La siguiente es una muestra para que se pueda adaptar.
Crear
app.min.js
archivoCrear
vendors.min.js
archivoCrear
boot.min.js
archivoEl
config.prod.js
simplemente contiene lo siguiente:Actualizar el
index.html
archivoEl
index.html
aspecto es el siguiente:Tenga en cuenta que
System.import('boot');
debe hacerse al final del cuerpo para esperar a que todos los componentes de su aplicación se registren desde elapp.min.js
archivo.No describo aquí la forma de manejar la minificación de CSS y HTML.
fuente
Puede usar el comando de compilación angular2-cli
https://github.com/angular/angular-cli/wiki/build#bundling
Actualizar
Esta respuesta se envió cuando angular2 estaba en rc4
Lo intenté nuevamente en angular-cli beta21 y angular2 ^ 2.1.0 y está funcionando como se esperaba
Esta respuesta requiere inicializar la aplicación con angular-cli que puede usar
O en uno existente
Actualización 08/06/2018
Para angular 6 la sintaxis es diferente.
Consultar la documentación
fuente
Puede construir un proyecto Angular 2 (2.0.0-rc.1) en Typescript usando SystemJS con Gulp y SystemJS-Builder .
A continuación se muestra una versión simplificada de cómo compilar, agrupar y minificar Tour of Heroes con 2.0.0-rc.1 ( fuente completa , ejemplo en vivo ).
gulpfile.js
system.config.js
fuente
gulp <taskname>
donde "TaskName" es el nombre de la tarea que llama al constructor SystemJS, en mi ejemplo anterior esbundle:app
. En esa tarea de Gulp, puede usar el módulo npm 'systemjs-builder' para especificar la configuración y el archivo de salida de su sistema.Aquí está mi modelo de MEA2N para Angular 2: https://github.com/simonxca/mean2-boilerplate
Es una simple repetición que se usa
tsc
para armar las cosas. (En realidad usa grunt-ts , que en esencia es solo eltsc
comando). No es necesario Wekpack, etc.Ya sea que uses gruñido o no, la idea es:
ts/
(ejemplo:public/ts/
)tsc
para reflejar la estructura de directorios de suts/
carpeta en unajs/
carpeta y solo haga referencia a los archivos en lajs/
carpeta en suindex.html
.Para que grunt-ts funcione (debería haber un comando equivalente para tsc simple, Gulp, etc.), tiene una propiedad en su
tsconfig.json
llamado"outDir": "../js"
y la referencia en sugruntfile.js
con:A continuación
grunt ts
, ejecute , que incluirá su aplicaciónpublic/ts/
y la reflejarápublic/js/
.Ahí. Muy fácil de entender. No es el mejor enfoque, pero es bueno para empezar.
fuente
La forma más fácil que he encontrado de agrupar angular rc1 para systemJs es usar
gulp
ysystemjs-builder
:Como se señaló en los comentarios, systemJs actualmente tiene problemas al empaquetar componentes usando
moduleId: module.id
https://github.com/angular/angular/issues/6131
La recomendación actual (angular 2 rc1) parece ser utilizar rutas explícitas, es decir
moduleId: '/app/path/'
fuente
@Component
decorador.bundle.js
intenta resolver las rutas como absolutas aunque sean relativas, lo que provoca errores 404 (consulte stackoverflow.com/questions/37497635/… ). ¿Cómo has lidiado con eso?moduleId
el camino relativo?moduleId: module.id
en@Component
templateUrl
y frustra el propósito de tenermoduleId
en primer lugar. Estoy tratando de usar rutas relativas como se recomienda ( angular.io/docs/ts/latest/cookbook/… )moduleId: '/app/components/home/'
Usé expressjs en el backend para servir mi proyecto ng2. Puedes comprobarlo desde mi página de github: https://github.com/echonax/ng2-beta-and-test-framework
fuente
En el sitio web Angular.io, en la sección Avanzado / Implementación, se recomienda que la forma más sencilla de implementar sea 'copiar el entorno de desarrollo al servidor'.
consulte la sección de: Implementación más sencilla posible. Los archivos finales del proyecto se muestran dentro de la sección de código. Tenga en cuenta que ya configura el código para cargar archivos de paquetes npm desde la web (en lugar de desde la carpeta local npm_modules).
asegúrese de que se esté ejecutando en su computadora local (npm start). Luego, en la carpeta del proyecto, copie todo lo que está en la subcarpeta '/ src' en el depósito de S3 que ha configurado. Puede usar arrastrar y soltar para copiar, durante ese proceso, tiene la opción de seleccionar la configuración de permisos para los archivos, asegúrese de hacerlos "legibles" para "todos".
en la pestaña 'Propiedades' del depósito, busque el panel 'Alojamiento de sitios web estáticos', marque la opción 'Usar este depósito para alojar el sitio web' y especifique 'index.html' tanto en el documento de índice como en el documento de error.
haga clic en el sitio web estático Endpoint, ¡su proyecto estará funcionando!
fuente