Recientemente, he estado desarrollando una biblioteca de JavaScript y ahora quiero publicarla en npm. Luego aprendí que tengo que usar un empaquetador de paquetes. Así que comencé a aprender webpack y seguí su guía Creación de una biblioteca de los documentos.
En su guía, sugirieron usar el tipo de módulo umd para admitir todos los sistemas de módulos, así que usé "umd". Pero cuando traté de ejecutar (a través de la importación ) el archivo de paquete generado en Node.js , arroja una excepción que dice " self está definido" . Luego abrí el archivo incluido y descubrí que hay una variable llamada self pero no sé cuál es su propósito.
En pocas palabras, probé el tipo de módulo commonjs y commonjs2 y publiqué un paquete de prueba y lo probé tanto en el entorno de reacción como en el de nodo y funcionó perfectamente. Lamentablemente, no funcionó en el entorno del navegador con la etiqueta <script> . Ahora mi pregunta es ¿qué tipo de módulo debo usar?
Aquí está mi webpack.config.js
const path = require("path"); module.exports = { mode: "production", entry: "./src/index.js", output: { path: path.resolve(__dirname, "dist"), filename: "index.js", library: { type: "commonjs", // umd, commonjs2, .... }, }, };Aquí está la estructura de mi proyecto.
|- /dist |- /src |- package.json |- webpack.config.jsonVersiones de paquetes web:
"webpack": "^5.53.0" "webpack-cli": "^4.8.0"Gracias por adelantado. Aprecio mucho su tiempo en StackOverflow <3.
Después de perder mucho tiempo, encontré la respuesta en un problema de github de webpack.
Puedo usar library.type: "umd" pero solo tengo que agregar lo siguiente en la configuración de mi paquete web.
module.exports = { output: { globalObject: 'this' // This line was missing } }