SlideShare una empresa de Scribd logo
Junio 2020
Humanización de JS
con TypeScript para
D365CE
• Fernando Bo Gimenez
About Me
• Fernando Bo Gimenez
• Senior consultant at Axazure.
• Email: fernando.bo21@Gmail.com
• LinkedIn:
https://www.linkedin.com/in/fernando-bo
• Twitter: @FernandoBo3
Agenda
• Adopción de TypeScript como nuestro lenguaje de
programación(Client Side)
• Implantación de nuestro entorno local de trabajo.
• Implementación de CI (Pipelines and Releases)
Por que TypeScript?
• Sintaxis:
Lenguaje Similar a C#.
Necesario para Crear PCF.
• Tipada:
Al ser un lenguaje tipado
ofrece muchisimas correcciones
de sintaxis y de programacion
en el mismo momento de
escritura del codigo
Entorno Local de Trabajo
• Requisitos:
• Node.js (https://nodejs.org/en/download/).
• Visual Studio Code. (Se puede usar VisualStudio tambien)
• Pasos:
1. Crear carpeta local
2. Abrir Node.Js command prompt
3. Npm Init  Crea el Package.json
4. Npm Install.
5. Npm install typescrtip  node_modules
6. npm install uglify-js.
Resultado:
Entorno Local de Trabajo
• Estructura de carpetas:
• TypeScript/src  aqui pondremos todo el código fuente de TS.
• JavaScript/src  aquí pondremos todo el código fuente de JS.
• NOTA: Solo lo crearemos para comparar.
• Visual Studio Code:
1. Crear archivo tsconfing.json
2. Crear archivo TS: en el ejemplo contactEntity.TS
3. Commando tsc  Convierte nuestro TS en un JS
4. Commando uglifyjs  Minifica nuestro JS
Implementación CI/CD
• Pipelines & Releases
• Pipeline: crearemos un pipeline
que realizara todas las acciones
que hemos hecho nuestro
entorno local y deje un paquete
listo para actualizar el Recurso
Web.
• Release: crearemos un reléase
para automatizar las
publicaciones de código JS a
D365CE.
Pipeline
• Tipos de tareas que utilizaremos:
• Npm
• Copy Files
• Command Line
• Grunt  multiple Uglify
• Publish Artifact
Así como en nuestro entorno local de trabajo lo hemos hecho, debemos
implementar prácticamente las mismas operaciones.
Comencemos entonces a crear nuestro pipeline.
1. Task Npm: no tiene mas misterio que agrega la cajita “npm” y en el campo
command seleccionar Install.
Pipeline
2. Copy Files: tendremos que mover ficheros de configuración de nuestro repo a
el servidor virtual donde se compilara nuestro código. En mi ejemplo siempre
muevo los ficheros al $(System.DefaultWorkingDirectory) que es donde luego
haremos la compilación. Los ficheros que tendremos que copiarnos son:
• package.json
• javascriptDeploys.json (Fichero para posterior deploy)
• tsconfig.json
• gruntfile.js
• **.ts (Todos los ficheros TypeScript que tenemos)
Grunt
Grunt es un multiejecutor de tareas en una sola tarea, en este ejemplo lo necesite
implementar para ejecutar por cada JS el comando “uglifyjs” mencionado
anteriormente.
Elegí este por que me ha parecido el mas simple y comprensible ya que hay
muchos ejemplos y documentación. Este es mi ejemplo.
module.exports = function (grunt) {
grunt.initConfig({
uglify: {
files: {
src: 'D:/a/1/a/dist/*.js',
dest: 'D:/a/1/a/distmin/', // destination folder
expand: true, // allow dynamic building
flatten: true, // remove all unnecessary nesting
ext: '.min.js' // replace .js to .min.js
}
},
watch: {
js: { files: '$(Build.ArtifactStagingDirectory)/dist/*.js', tasks: [ 'uglify' ] },
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', [ 'uglify' ]);
};
Pipeline
3. Command Line: el siguiente paso consiste en ejecutar todos los comandos
que hemos ejecutado en nuestro entorno local, agregando unas ejecuciones
de instalación especificas para Grunt:
• npm install typescript
• npm install grunt --save-dev
• npm install grunt-cli --save-dev
• npm install grunt-contrib-watch --save-dev
• npm install grunt-contrib-uglify --save-dev
• tsc --outDir $(Build.ArtifactStagingDirectory)dist -p
$(System.DefaultWorkingDirectory)TypeScript **.ts
Pipeline
4. Grunt: esta tarea simplemente ejecutara el script js anteriormente
mencionado. En la opción Grunt Task tendremos que poner el nombre de la
tarea que hemos asignado en el JS.
5. Publish build artifact: esta tarea crea un artefacto
que que utilizaremos en nuestro reléase.
Release
Para finalizar, solo nos queda publicar los javascripts en los correspondientes web
resources.
Utilizo las Power DevOps Tools para hacer la publicacion, las únicas tareas que
utilizaremos de este set son:
• Power DevOps Tool Installer
• Update Web Resources (Preview)
Para la tarea “Update Web Resources”, utilizaremos el fichero
javascriptDeploys.json.
Por ultimo indicamos la
carpeta de donde recogerá los
JS para publicar.
Importante: los webresources
Tienen que estar creados antes
de la ejecución.
¡Muchas gracias!

Más contenido relacionado

La actualidad más candente

Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
Rodolfo Finochietti
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
Rodolfo Finochietti
 
Betabeers - continuous deployment
Betabeers - continuous deploymentBetabeers - continuous deployment
Betabeers - continuous deployment
Fernando Escolar Martínez-Berganza
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
Rodrigo Pimentel
 
Go
GoGo
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
Plain Concepts
 
Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!
Demian Raschkovan
 
Construyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVMConstruyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVM
Iván López Martín
 
Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)
Helder De Oliveira
 
SharePoint Framework, paso a paso
SharePoint Framework, paso a pasoSharePoint Framework, paso a paso
SharePoint Framework, paso a paso
Haaron Gonzalez
 
Jenkins ci + selenium
Jenkins ci + seleniumJenkins ci + selenium
Jenkins ci + selenium
Info ArtdeCode
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
Mariano Sánchez
 
Lemoncode github actions
Lemoncode   github actionsLemoncode   github actions
Lemoncode github actions
Braulio Diez Botella
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
Cristian Romero Matesanz
 
.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net
Globant
 
Proceso desarrollo de fábrica de software
Proceso desarrollo de fábrica de softwareProceso desarrollo de fábrica de software
Proceso desarrollo de fábrica de software
Luis Alexander Aldazabal Gil
 
Biicode en la Hackers Week
Biicode en la  Hackers WeekBiicode en la  Hackers Week
Biicode en la Hackers Week
Julia S. Simon
 
Re-bot-lution
Re-bot-lutionRe-bot-lution
Re-bot-lution
Rodolfo Finochietti
 
Introducción a WPF
Introducción a WPFIntroducción a WPF
Introducción a WPF
Rodolfo Finochietti
 

La actualidad más candente (20)

Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 
Betabeers - continuous deployment
Betabeers - continuous deploymentBetabeers - continuous deployment
Betabeers - continuous deployment
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Go
GoGo
Go
 
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
DotNet 2019 | Luis Fraile - Tests de integración con .NET Core, Docker y Azur...
 
Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!Real CI/CD para MSDyn365FO… Be a hero!
Real CI/CD para MSDyn365FO… Be a hero!
 
Construyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVMConstruyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVM
 
Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)
 
SharePoint Framework, paso a paso
SharePoint Framework, paso a pasoSharePoint Framework, paso a paso
SharePoint Framework, paso a paso
 
Jenkins ci + selenium
Jenkins ci + seleniumJenkins ci + selenium
Jenkins ci + selenium
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Lemoncode github actions
Lemoncode   github actionsLemoncode   github actions
Lemoncode github actions
 
Clase2
Clase2Clase2
Clase2
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net
 
Proceso desarrollo de fábrica de software
Proceso desarrollo de fábrica de softwareProceso desarrollo de fábrica de software
Proceso desarrollo de fábrica de software
 
Biicode en la Hackers Week
Biicode en la  Hackers WeekBiicode en la  Hackers Week
Biicode en la Hackers Week
 
Re-bot-lution
Re-bot-lutionRe-bot-lution
Re-bot-lution
 
Introducción a WPF
Introducción a WPFIntroducción a WPF
Introducción a WPF
 

Similar a Humanizacion de java script con typescript para d365

Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrollo
Alejandro Hernández
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
Julio Palma Vázquez
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Fco Javier Núñez Berrocoso
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
Luis Ruiz Pavón
 
Introducción a SharePoint Framework
Introducción a SharePoint FrameworkIntroducción a SharePoint Framework
Introducción a SharePoint Framework
Haaron Gonzalez
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
Eric Zeidan
 
Desplegando Drupal con Capistrano
Desplegando Drupal con CapistranoDesplegando Drupal con Capistrano
Desplegando Drupal con Capistrano
David Gil Sánchez
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
Pablo Godel
 
Composer
ComposerComposer
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroides
Mario IC
 
Introducción a ndk
Introducción a ndkIntroducción a ndk
Introducción a ndk
Hector Alvarez
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
Jaime Perera Merino
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Restorando
 
Drupal grunt task - Drupal Camp CR 2015
Drupal grunt task  - Drupal Camp CR 2015Drupal grunt task  - Drupal Camp CR 2015
Drupal grunt task - Drupal Camp CR 2015
Daniel Noyola
 
Node-webkit
Node-webkitNode-webkit
Node-webkit
Jose Gratereaux
 
Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDKFe
 
Introducción android ndk
Introducción android ndkIntroducción android ndk
Introducción android ndk
Barcelona GTUG
 
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Vicente Gerardo Guzman Lucio
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
BEEVA_es
 

Similar a Humanizacion de java script con typescript para d365 (20)

Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrollo
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Redes
RedesRedes
Redes
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
Introducción a SharePoint Framework
Introducción a SharePoint FrameworkIntroducción a SharePoint Framework
Introducción a SharePoint Framework
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Desplegando Drupal con Capistrano
Desplegando Drupal con CapistranoDesplegando Drupal con Capistrano
Desplegando Drupal con Capistrano
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Composer
ComposerComposer
Composer
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroides
 
Introducción a ndk
Introducción a ndkIntroducción a ndk
Introducción a ndk
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Drupal grunt task - Drupal Camp CR 2015
Drupal grunt task  - Drupal Camp CR 2015Drupal grunt task  - Drupal Camp CR 2015
Drupal grunt task - Drupal Camp CR 2015
 
Node-webkit
Node-webkitNode-webkit
Node-webkit
 
Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDK
 
Introducción android ndk
Introducción android ndkIntroducción android ndk
Introducción android ndk
 
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 

Más de Demian Raschkovan

Que ha sido de wally
Que ha sido de wallyQue ha sido de wally
Que ha sido de wally
Demian Raschkovan
 
Power automate como solucion para integraciones
Power automate como solucion para integracionesPower automate como solucion para integraciones
Power automate como solucion para integraciones
Demian Raschkovan
 
Dynamics saturday online 2020 gestion de credito v1.0
Dynamics saturday online 2020   gestion de credito v1.0Dynamics saturday online 2020   gestion de credito v1.0
Dynamics saturday online 2020 gestion de credito v1.0
Demian Raschkovan
 
Hjp saturday 2020_v2
Hjp saturday 2020_v2Hjp saturday 2020_v2
Hjp saturday 2020_v2
Demian Raschkovan
 
Despliegue continuo en dev ops para multiples entornos de dync 365
Despliegue continuo en dev ops para multiples entornos de dync 365Despliegue continuo en dev ops para multiples entornos de dync 365
Despliegue continuo en dev ops para multiples entornos de dync 365
Demian Raschkovan
 
Chateando con power apps
Chateando con power appsChateando con power apps
Chateando con power apps
Demian Raschkovan
 
Alm orientado a power platform
Alm orientado a power platformAlm orientado a power platform
Alm orientado a power platform
Demian Raschkovan
 
Dynamics 365 human resources and business continuity pdf
Dynamics 365 human resources and business continuity pdfDynamics 365 human resources and business continuity pdf
Dynamics 365 human resources and business continuity pdf
Demian Raschkovan
 
Dynamics for marketing 365 desde cero y como extender nuestro customer journe...
Dynamics for marketing 365 desde cero y como extender nuestro customer journe...Dynamics for marketing 365 desde cero y como extender nuestro customer journe...
Dynamics for marketing 365 desde cero y como extender nuestro customer journe...
Demian Raschkovan
 
Automatizando flujos con teams y power automate
Automatizando flujos con teams y power automateAutomatizando flujos con teams y power automate
Automatizando flujos con teams y power automate
Demian Raschkovan
 
Power bi fromzeroto bi hero
Power bi fromzeroto bi heroPower bi fromzeroto bi hero
Power bi fromzeroto bi hero
Demian Raschkovan
 
Definir un Gobierno en Power Platform: todo bajo control
Definir un Gobierno en Power Platform: todo bajo controlDefinir un Gobierno en Power Platform: todo bajo control
Definir un Gobierno en Power Platform: todo bajo control
Demian Raschkovan
 
Todo lo que te gustaría saber de Field Services - Enrique Romero
Todo lo que te gustaría saber de Field Services - Enrique RomeroTodo lo que te gustaría saber de Field Services - Enrique Romero
Todo lo que te gustaría saber de Field Services - Enrique Romero
Demian Raschkovan
 
Empower digital transformation in your organization with the power platform
Empower digital transformation in your organization with the power platformEmpower digital transformation in your organization with the power platform
Empower digital transformation in your organization with the power platform
Demian Raschkovan
 
Solución estándar: ¿Amigo o enemigo? PAC(K)
Solución estándar: ¿Amigo o enemigo? PAC(K)Solución estándar: ¿Amigo o enemigo? PAC(K)
Solución estándar: ¿Amigo o enemigo? PAC(K)
Demian Raschkovan
 
Máquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDSMáquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDS
Demian Raschkovan
 
Mejora tus procesos de negocio con Adaptive Cards
Mejora tus procesos de negocio con Adaptive CardsMejora tus procesos de negocio con Adaptive Cards
Mejora tus procesos de negocio con Adaptive Cards
Demian Raschkovan
 
Dynamics saturday madrid 2019 sergio hernandez
Dynamics saturday madrid 2019 sergio hernandezDynamics saturday madrid 2019 sergio hernandez
Dynamics saturday madrid 2019 sergio hernandez
Demian Raschkovan
 
Dynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datos
Dynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datosDynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datos
Dynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datos
Demian Raschkovan
 
Dynamics saturday madrid 2019 microsoft flow
Dynamics saturday madrid 2019   microsoft flowDynamics saturday madrid 2019   microsoft flow
Dynamics saturday madrid 2019 microsoft flow
Demian Raschkovan
 

Más de Demian Raschkovan (20)

Que ha sido de wally
Que ha sido de wallyQue ha sido de wally
Que ha sido de wally
 
Power automate como solucion para integraciones
Power automate como solucion para integracionesPower automate como solucion para integraciones
Power automate como solucion para integraciones
 
Dynamics saturday online 2020 gestion de credito v1.0
Dynamics saturday online 2020   gestion de credito v1.0Dynamics saturday online 2020   gestion de credito v1.0
Dynamics saturday online 2020 gestion de credito v1.0
 
Hjp saturday 2020_v2
Hjp saturday 2020_v2Hjp saturday 2020_v2
Hjp saturday 2020_v2
 
Despliegue continuo en dev ops para multiples entornos de dync 365
Despliegue continuo en dev ops para multiples entornos de dync 365Despliegue continuo en dev ops para multiples entornos de dync 365
Despliegue continuo en dev ops para multiples entornos de dync 365
 
Chateando con power apps
Chateando con power appsChateando con power apps
Chateando con power apps
 
Alm orientado a power platform
Alm orientado a power platformAlm orientado a power platform
Alm orientado a power platform
 
Dynamics 365 human resources and business continuity pdf
Dynamics 365 human resources and business continuity pdfDynamics 365 human resources and business continuity pdf
Dynamics 365 human resources and business continuity pdf
 
Dynamics for marketing 365 desde cero y como extender nuestro customer journe...
Dynamics for marketing 365 desde cero y como extender nuestro customer journe...Dynamics for marketing 365 desde cero y como extender nuestro customer journe...
Dynamics for marketing 365 desde cero y como extender nuestro customer journe...
 
Automatizando flujos con teams y power automate
Automatizando flujos con teams y power automateAutomatizando flujos con teams y power automate
Automatizando flujos con teams y power automate
 
Power bi fromzeroto bi hero
Power bi fromzeroto bi heroPower bi fromzeroto bi hero
Power bi fromzeroto bi hero
 
Definir un Gobierno en Power Platform: todo bajo control
Definir un Gobierno en Power Platform: todo bajo controlDefinir un Gobierno en Power Platform: todo bajo control
Definir un Gobierno en Power Platform: todo bajo control
 
Todo lo que te gustaría saber de Field Services - Enrique Romero
Todo lo que te gustaría saber de Field Services - Enrique RomeroTodo lo que te gustaría saber de Field Services - Enrique Romero
Todo lo que te gustaría saber de Field Services - Enrique Romero
 
Empower digital transformation in your organization with the power platform
Empower digital transformation in your organization with the power platformEmpower digital transformation in your organization with the power platform
Empower digital transformation in your organization with the power platform
 
Solución estándar: ¿Amigo o enemigo? PAC(K)
Solución estándar: ¿Amigo o enemigo? PAC(K)Solución estándar: ¿Amigo o enemigo? PAC(K)
Solución estándar: ¿Amigo o enemigo? PAC(K)
 
Máquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDSMáquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDS
 
Mejora tus procesos de negocio con Adaptive Cards
Mejora tus procesos de negocio con Adaptive CardsMejora tus procesos de negocio con Adaptive Cards
Mejora tus procesos de negocio con Adaptive Cards
 
Dynamics saturday madrid 2019 sergio hernandez
Dynamics saturday madrid 2019 sergio hernandezDynamics saturday madrid 2019 sergio hernandez
Dynamics saturday madrid 2019 sergio hernandez
 
Dynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datos
Dynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datosDynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datos
Dynamics saturday madrid 2019 - que tus modelos en PBI no sean solo datos
 
Dynamics saturday madrid 2019 microsoft flow
Dynamics saturday madrid 2019   microsoft flowDynamics saturday madrid 2019   microsoft flow
Dynamics saturday madrid 2019 microsoft flow
 

Último

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 

Último (20)

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 

Humanizacion de java script con typescript para d365

  • 1. Junio 2020 Humanización de JS con TypeScript para D365CE • Fernando Bo Gimenez
  • 2.
  • 3. About Me • Fernando Bo Gimenez • Senior consultant at Axazure. • Email: fernando.bo21@Gmail.com • LinkedIn: https://www.linkedin.com/in/fernando-bo • Twitter: @FernandoBo3
  • 4. Agenda • Adopción de TypeScript como nuestro lenguaje de programación(Client Side) • Implantación de nuestro entorno local de trabajo. • Implementación de CI (Pipelines and Releases)
  • 5. Por que TypeScript? • Sintaxis: Lenguaje Similar a C#. Necesario para Crear PCF. • Tipada: Al ser un lenguaje tipado ofrece muchisimas correcciones de sintaxis y de programacion en el mismo momento de escritura del codigo
  • 6. Entorno Local de Trabajo • Requisitos: • Node.js (https://nodejs.org/en/download/). • Visual Studio Code. (Se puede usar VisualStudio tambien) • Pasos: 1. Crear carpeta local 2. Abrir Node.Js command prompt 3. Npm Init  Crea el Package.json 4. Npm Install. 5. Npm install typescrtip  node_modules 6. npm install uglify-js. Resultado:
  • 7. Entorno Local de Trabajo • Estructura de carpetas: • TypeScript/src  aqui pondremos todo el código fuente de TS. • JavaScript/src  aquí pondremos todo el código fuente de JS. • NOTA: Solo lo crearemos para comparar. • Visual Studio Code: 1. Crear archivo tsconfing.json 2. Crear archivo TS: en el ejemplo contactEntity.TS 3. Commando tsc  Convierte nuestro TS en un JS 4. Commando uglifyjs  Minifica nuestro JS
  • 8. Implementación CI/CD • Pipelines & Releases • Pipeline: crearemos un pipeline que realizara todas las acciones que hemos hecho nuestro entorno local y deje un paquete listo para actualizar el Recurso Web. • Release: crearemos un reléase para automatizar las publicaciones de código JS a D365CE.
  • 9. Pipeline • Tipos de tareas que utilizaremos: • Npm • Copy Files • Command Line • Grunt  multiple Uglify • Publish Artifact Así como en nuestro entorno local de trabajo lo hemos hecho, debemos implementar prácticamente las mismas operaciones. Comencemos entonces a crear nuestro pipeline. 1. Task Npm: no tiene mas misterio que agrega la cajita “npm” y en el campo command seleccionar Install.
  • 10. Pipeline 2. Copy Files: tendremos que mover ficheros de configuración de nuestro repo a el servidor virtual donde se compilara nuestro código. En mi ejemplo siempre muevo los ficheros al $(System.DefaultWorkingDirectory) que es donde luego haremos la compilación. Los ficheros que tendremos que copiarnos son: • package.json • javascriptDeploys.json (Fichero para posterior deploy) • tsconfig.json • gruntfile.js • **.ts (Todos los ficheros TypeScript que tenemos)
  • 11. Grunt Grunt es un multiejecutor de tareas en una sola tarea, en este ejemplo lo necesite implementar para ejecutar por cada JS el comando “uglifyjs” mencionado anteriormente. Elegí este por que me ha parecido el mas simple y comprensible ya que hay muchos ejemplos y documentación. Este es mi ejemplo. module.exports = function (grunt) { grunt.initConfig({ uglify: { files: { src: 'D:/a/1/a/dist/*.js', dest: 'D:/a/1/a/distmin/', // destination folder expand: true, // allow dynamic building flatten: true, // remove all unnecessary nesting ext: '.min.js' // replace .js to .min.js } }, watch: { js: { files: '$(Build.ArtifactStagingDirectory)/dist/*.js', tasks: [ 'uglify' ] }, } }); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.registerTask('default', [ 'uglify' ]); };
  • 12. Pipeline 3. Command Line: el siguiente paso consiste en ejecutar todos los comandos que hemos ejecutado en nuestro entorno local, agregando unas ejecuciones de instalación especificas para Grunt: • npm install typescript • npm install grunt --save-dev • npm install grunt-cli --save-dev • npm install grunt-contrib-watch --save-dev • npm install grunt-contrib-uglify --save-dev • tsc --outDir $(Build.ArtifactStagingDirectory)dist -p $(System.DefaultWorkingDirectory)TypeScript **.ts
  • 13. Pipeline 4. Grunt: esta tarea simplemente ejecutara el script js anteriormente mencionado. En la opción Grunt Task tendremos que poner el nombre de la tarea que hemos asignado en el JS. 5. Publish build artifact: esta tarea crea un artefacto que que utilizaremos en nuestro reléase.
  • 14. Release Para finalizar, solo nos queda publicar los javascripts en los correspondientes web resources. Utilizo las Power DevOps Tools para hacer la publicacion, las únicas tareas que utilizaremos de este set son: • Power DevOps Tool Installer • Update Web Resources (Preview) Para la tarea “Update Web Resources”, utilizaremos el fichero javascriptDeploys.json. Por ultimo indicamos la carpeta de donde recogerá los JS para publicar. Importante: los webresources Tienen que estar creados antes de la ejecución.

Notas del editor

  1. Colors can be inverted by formatting background
  2. Colors can be inverted by formatting background
  3. Colors can be inverted by formatting background