Noviembre 28, 2014
enzo
Si queremos que las personas puedan utilizar nuestras bibliotecas a través de Bower tenemos que seguir algunos pasos simples.
- Añadir archivo bower.json a nuestro el proyecto.
- Crear un release de nuestro proyecto de que coincida con la información en nuestro archivo bower.
- Ejecutar bower publish y así compartir nuestro proyecto.
- El problema
El problema que encontre es que el proceso de publicación de Bower no valida archivo bower.json, por lo que es probable después de publicar nuestro proyecto y cuando la gente trate de usar nuestra biblioteca y aunque esté disponible obtengan un error similar al siguiente:
bower backform#~0.0.1-alpha EMALFORMED Failed to read /var/folders/bh/8fr0bx9113n0plkjjkt2s5d40000gn/T/enzo/bower/backform-20375-ST4wT6/bower.json
Additional error details:
Unexpected token n
Debido a que el archivo de bower.json tenga errores de formato, imposibilitanto a los usarios utilizarlo.
- La solución.
Afortunadamente hay un paquete NodeJS para validar archivos de bower.json antes de publicar.
Primero debemos instalar el paquete con el siguiente comando.
$ npm install bower-json
Ejecute este comando dentro de la carpeta de su biblioteca a compartir o utilizar la opción -g e instalar globalmente en su sitema.
Ahora vamos a utilizar el siguiente script de NodeJS para validar nuestro archivo bower.json, nombrare este script como check_bower.json.
var bowerJson = require('bower-json');
// Can also be used by simply calling bowerJson()
bowerJson.read('./bower.json', function (err, json) {
if (err) {
console.error('There was an error reading the file');
console.error(err.message);
return;
}
console.log('JSON: ', json);
});
Para utilizar este script se debe ejecutar el siguiente comando.
$ node check_bower.js
Como se puede imaginar conseguirá el mismo error en la primera ejecución, por lo que necesita trabajar en su archivo hasta que se obtiene una salida similar a siguiente:
JSON: { name: 'backform',
main: [ 'src/backform.js' ],
version: '0.0.1-alpha',
homepage: 'https://github.com/AmiliaApp/backform',
author: { name: 'Martin Drapeau', email: 'martindrapeau@gmail.com' },
description: 'Backform takes a Backbone model and transforms it into an HTML form',
keywords: [ 'backbone', 'form', 'underscore' ],
license: 'MIT',
ignore: [ '**/.*', 'node_modules', 'bower_components', 'test', 'tests' ],
dependencies: { backbone: '1.0.0 - 1.1.2', underscore: '1.4.4 - 1.6.0' } }
Puede ver un ejemplo de archivo bower.json en https://github.com/enzolutions/backbone.drupal/blob/master/bower.json.
Espero que hayas encontrado esta entrada del blog útil.