Me he encontrado con este mismo problema. Uno pensaría que habría una solución obvia. Esto es lo que he estado haciendo para firefox (no he trabajado con Chrome):
Tengo un archivo lib/dbg.js que contiene mis funciones básicas de depuración que quiero usar en todas partes.
En cada módulo de scripts contenidos en mis main.js, tengo esto:
contextMenu.Item({
...
contentScript: export_internals(require('dbg')),
contentScriptFile: my-actual-scripts.js
...
y luego en el principal Tengo una función
function export_internals(module) {
var code = '';
for (name in module) {
var val = module[name];
if (val.constructor === String)
code += name + ' = "' + val + '";';
else
code += val;
}
return code;
}
que básicamente sólo cambia entre las propiedades exportados (variables, funciones, etc.) y hace uso de cosas como Function.toString() para básicamente construir una versión en cadena del módulo dbg y pasarlo como un script de contenido en línea. Esta función probablemente no es enormemente general que acabo de escribir es para manejar las funciones y las cadenas simples (los dos únicos tipos de datos que necesitan) pero el principio debe aplicarse fácilmente incluso si tuviera que acaba de hacer algo como
contentScript: require('dbg').my_function.toString()
Claramente es un hack pero es bastante confiable hasta ahora. ¿Es eso lo que estabas buscando?
Parece que sí. https://builder.addons.mozilla.org/addon/1047822/latest/ – Lori
ese enlace parece roto ahora ... – bgmCoder
Quizás https://addons.mozilla.org/en-US/developers/docs/sdk/latest /dev-guide/tutorials/reusable-modules.html es un documento equivalente. Tal vez no lo es. – Lori