0

De CFX a JPM

28Oct
en Add-on SDK

Con vista al cambio de CFX por JPM en el Add-on SDK, el trabajador de Mozilla Erik Vold ha publicado un artículo que aborda las novedades que encontraremos en la próxima versión de esta herramienta.

Descargar JPM.

Remapeando Package.json

ID

El ID de un complemento necesita ser de uno de dos tipos, una GUID o una cadena que incluye un símbolo “@”. CFX aceptaba más cadenas sin espacios y al final añadía “@jetpack” mientras generaba el install.rdf. Ahora con el cambio a JPM tendrás que añadir manualmente “@jetpack” a tu ID en el archivo package.json para que coincida con el ID usado en AMO. Por lo que si tenemos un ID como este "jid1-XBSfJmJJlj9GNA" al hacerle los cambios quedaría de esta forma "jid1-XBSfJmJJlj9GNA@jetpack".

Title

El título de tu complemento debe ser especificado en la propiedad title en package.json. Anteriormente se usaba la propiedad fullName pero esta ha sido deshechada y ahora se utilizará title.

Punto de entrada principal

Con CFX generábamos un complemento que la entrada principal era lib/main.js, con JPM la entrada principal cambia a index.js. Sin embargo, si deseas continuar usando lib/main.js, debes añadir "main": "lib/main" al package.json de tu complemento.

Redescubriendo requerimientos

Paquetes de terceros

Con CFX habían varias formas de usar módulos de terceros, pero no había un administrador de paquetes, por esa razón Mozilla decidió crear uno que soportara npm. Lo que significó la construcción de un nuevo cargador para apoyar la lógica del cargador de Node.JS y ahora se utiliza en complementos hechos con JPM por defecto (obra de Jordan Santell).

También se decidió retirar los métodos heredados de la inclusión de paquetes de terceros, por lo que si usted está utilizando un paquete que no está en npm, debe ejecutar npm publish en él, ya que será más fácil para que usted lo utilice.

Aquí podrán encontrar una buena guía para administrar dependencias con npm.

Rutas relativas

Si tu complemento usa"lib/utils/something.js" desde "lib/main.js" parecido a esto require("utils/something")entonces necesitarás cambiarlo a require("./utils/something")porque en el nuevo cargador cambia lo mencionado anteriormente.

La declaración require("utils/something")provocaría que el nuevo cargador buscara una dependencia llamada. Esto no es diferente de como funciona node.

Las declaraciones require("sdk/timers") continuarán funcionando.

Rutas de pruebas

El viejo cargador CFX permitiría un archivo como test/test-main.js hacer declaraciones require("main") para cargar el archivo lib/main.js. El nuevo cargador no hace esto, la declaración se debe hacer de forma relativa, por lo que require("main") debe convertirse en require("../lib/main").

En próximos artículos abordaremos más este tema.

Etiquetado en:

Dejar un comentario