Definiendo variable global para Browserify
spine.js (2)
Estoy usando SpineJS (que exporta un módulo commonjs) y necesita estar disponible a nivel mundial porque lo uso en todas partes, pero parece que tengo que hacer Spine = require(''spine'')
en cada archivo que usa Spine para cosas trabajo.
¿Hay alguna forma de definir Spine
una vez para que esté disponible globalmente?
PD: Estoy usando Spine como ejemplo, pero en general me pregunto cómo hacer esto con cualquier otra biblioteca.
En primer lugar, para tu ejemplo, David es correcto. Incluya todas las dependencias en cada módulo en el que lo necesite. Es muy detallado, pero no existe una magia de tiempo de compilación que alivie todo tipo de patrones y posibles problemas futuros.
La respuesta real.
Esto no siempre es práctico. Browserify acepta una opción llamada insertGlobalVars
. En la compilación, cada archivo distribuido se escanea en busca de identificadores que coincidan con los nombres de clave proporcionados y envuelve el módulo en un IIFE que contiene argumentos que resuelven cada identificador que no está asignado dentro del módulo. Todo esto sucede antes de que se finalice el árbol de dependencias, lo que le permite usar require para resolver una dependencia.
TLDR
Use la opción insertGlobalVars en Browserify.
browserify({
insertGlobalVars: {
spine: function(file, dir) {
return ''require("spine")'';
}
}
});
Para cada archivo escaneado, si existe una spine
identificadora que no está asignada, resuelva según se require("spine")
.
Escribir Spine = require(''spine'')
en cada archivo es la forma correcta de hacerlo.
Sin embargo, hay varias posibilidades al usar el objeto global
o de window
(browserify establece el objeto global
en window
, que es el espacio de nombres global):
- en spine.js:
global.Spine = module.exports
- en cualquier otro archivo .js incluido en browserify:
global.Spine = require(''spine'')
- en una etiqueta de script o en un archivo .js al que hace referencia el archivo .html, después del archivo
window.Spine = require(''spine'')
:window.Spine = require(''spine'')