El proceso de compilación que trae por defecto el SharePoint Framework es el siguiente:
Este proceso de serie es bastante completo. Puede cumplir con el día a día de muchos desarrolladores. Sin embargo, dependiendo del tipo de desarrollo que se lleve a cabo, es posible que te haga falta extenderlo. Por ejemplo, si utilizas templates html y no lo quieres incluir dentro del bundle, para que te funcione deberás de copiar este template dentro del servidor.
Otra tarea que podemos incluir dentro de nuestro proceso de compilación, es la verificación de nuestro HTML con herramientas como Handlebars
Las tareas de la Build que se utilizan en el SPFX implementan la siguiente interfaz:
export interface IExecutable { execute: (config: IBuildConfig)=> Promise<void>; name?: string; isEnabled?: () => boolean getNukeMatch?: (config: IBuildConfig, taskConfig?: {}) => string[]; }
Cuando tengamos definida nuestra tarea, el siguiente paso será registrar nuestra tarea dentro del Pipeline de la Build. Para ello, dentro del fichero gulpfile.js deberemos añadir nuestra tarea utilizando la llamada build.rig.addBuildTastk().
Vamos a implementar una tarea que copie todo los templates de html que utilizamos en nuestros WebPart dentro del servidor NodeJS, para que cuando intentemos acceder a ellos no nos de error.
En primer lugar, nos creamos un fichero javascript llamado copyTemplates.js. En este fichero añadiremos el siguiente código:
'use strict'; var error = require('@microsoft/gulp-core-build').error, log = require('@microsoft/gulp-core-build').log; var CopyTemplates = { execute: (config) => { return new Promise((resolve, reject) => { var time= new Date(); var res = time.getDate(); log(`Starting subtask 'copyTemplates'...`); config.gulp.src('./src/webparts/**/*.html') .pipe(config.gulp.dest('./temp/')); log(`Finished subtask 'copyTemplates'... `); resolve(); }); }, name: 'copytemplates' }; exports.default = CopyTemplates;
El código anterior es bastante simple, lo único que hay que tener en cuenta, es utilizar el error y el log que te da el propio SPFX; aunque si lo preferís, podéis utilizar otras utilidades como gulp-logger.
Otra de las cosas que hay que tener en cuenta a la hora de implementar la tarea, es incluir un Log de inicio y final de la misma (esto lo hacen las otras tareas y es recomendable, sobre todo de cara a seguir una estandarización de las mismas).
Una vez tenemos la tarea, el siguiente paso es añadirla dentro de nuestro pipeline. Este proceso ha sufrido algunos cambios desde la primera versión. Ahora mismo y tal como pone en esta Issue , se hace de la siguiente forma.
Para ello, editamos el fichero gulpfile de la siguiente forma:
'use strict'; const gulp = require('gulp'); const build = require('@microsoft/sp-build-web'); const copytemplates = require('./copyTemplate'); build.rig.addBuildTasks(copytemplates); build.initialize(gulp);
También es posible añadir las tareas directamente, sin la necesidad de cargar ningún fichero previo. No obstante, considero que por el mantenimiento y la legibilidad del código, es mejor opción que escribirlo directamente en el propio fichero de gulpfile, aunque se puede hacer de la siguiente forma:
const gulp = require('gulp'); const build = require('@microsoft/sp-build-web'); const firsttask = build.subTask('firsttask', (gulp, buildConfig, done) => { // task code return Promise.resolve(); }); const secondtask = build.subTask('secondtask', (gulp, buildConfig, done) => { // task code return Promise.resolve(); }); build.rig.addBuildTasks(firsttask); build.rig.addBuildTasks(secondtask); build.initialize(gulp);
Hemos visto que ahora mismo el desarrollador de SharePoint es un desarrollador Web, que debe de dominar todas las herramientas de Front-End para poder sacarle el máximo partido a este nuevo modelo de desarrollo.
Uno de los aspectos más novedosos del SPFX, es la libertad para extenderlo según las necesidades de cada uno, así como la extensión y utilización de las herramientas que el desarrollador escoja.
Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)