• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
      • Ajuste de Curvas
      • Calculadora de Matrices
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Incluir el número de versión con Webpack

Node, TypeScript

febrero 3, 2021 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 3 minutos

Recientemente se ha publicado una serie en la que se explicaba cómo se puede crear una librería JavaScript en Node usando para ellos TypeScript. Serie que complementa la publicada hace unos años acerca de cómo crear una librería en JavaScript. Algo que puede ser de interés a la hora de publicar librerías es incluir en las mismas el número de versión y otra información relativa a la compilación de forma automática. En el caso de trabajar con Webpack, como es el caso de la plantilla tslane, esto es algo que se puede realizar fácilmente con un par de ajustes. Por lo que vamos a ver como incluir en la plantilla tslane el número de versión con Webpack.

En esta entrada vamos a continuar trabajando con la plantilla tslane que se desarrolló en la serie “Creación de una librería TypeScript“. Plantilla que se puede descargar desde GitHub.

Definición de constantes globales en Webpack

Para incluir el número de versión automáticamente al compilar la liberara con Webpack vamos a usar el plugin DefinePlugin. Un plugin que permite crear constantes globales que se pueden configurar en tiempo de compilación. Para ello abriremos el archivo webpack.config.js y crearemos un objeto como el siguiente en el que se guardará el número de versión y el hash del repositorio:

Por qué migrar tus proyectos TypeScript a ES Modules en 2026
En Analytics Lane
Por qué migrar tus proyectos TypeScript a ES Modules en 2026

const definePlugin = new webpack.DefinePlugin({
  VERSION: JSON.stringify(package.version),
  HASH: JSON.stringify(commitHash)
});

En el que se creará un objeto DefinePlugin con las propiedades VERSION y HASH. El número de versión se puede obtener del archivo package.json sin mayor problema, mientras que el hash del repositorio se puede obtener con el siguiente código:

const commitHash = require('child_process')
  .execSync('git rev-parse --short HEAD')
  .toString();

Estos valores serán constantes globales cuyos valores se obtienen en el momento de compilación. Al incluir estos cambios, el archivo webpack.config.js del proyecto quedará de la siguiente forma:

const path = require('path');
const webpack = require('webpack');

const package = require('./package.json');
const library = package.name;
const filename = `${package.name}_${package.version}.js`;
const mapname = `${package.name}_map_${package.version}.js`;

const commitHash = require('child_process')
  .execSync('git rev-parse --short HEAD')
  .toString();

const definePlugin = new webpack.DefinePlugin({
  VERSION: JSON.stringify(package.version),
  HASH: JSON.stringify(commitHash)
});

module.exports = [{
    name: 'map',
    entry: './src/index.ts',
    devtool: 'inline-source-map',
    mode: 'production',
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/
            },
        ],
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
    },
    output: {
        filename: mapname,
        library: library,
        path: path.resolve(__dirname, 'bundles'),
    }
}, {
    name: 'production',
    entry: './src/index.ts',
    mode: 'production',
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/
            },
        ],
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
    },
    output: {
        filename: filename,
        library: library,
        path: path.resolve(__dirname, 'bundles'),
    },
    plugins: [definePlugin]
}];

Exportación del número de versión

En el caso de que queramos exportar los valores se puede ir al archivo index.ts y crear un objeto que se exportará. Por ejemplo, un objeto version con las propiedades indicadas.

declare const VERSION: string;
declare const HASH: string;
 
export const version = {
  version: VERSION,
  build: HASH
};

Es importante declarar las constantes antes de usarlas para que produzca ningún error a la hora de compilar el código. Ahora una vez generado el archivo compilado se puede acceder al número de versión el hash utilizando la propiedad version que se encuentra disponible en la librería.

Publicidad


Conclusiones

En esta ocasión hemos visto cómo se puede automatizar la inclusión del número de versión con Webpack en nuestros proyectos TypeScript. Aunque el truco se puede usar sin problemas también en JavaScript sin muchos cambios.

El proyecto completo y actualizado se pude descargar desde su repositorio.

Imagen de Albrecht Fietz en Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Por qué migrar tus proyectos TypeScript a ES Modules en 2026
  • Actualizar expresslanets a ES Modules con tsx y Vitest
  • Migrar tslane a un paquete dual CommonJS y ESM con tsup y Vitest
  • Curiosidad: Por qué la criptografía habla siempre de Alice y Bob
  • Errores comunes al interpretar resultados estadísticos
  • Método del codo: interpretación correcta y limitaciones
  • Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas
  • Pareto/NBD: cuando el abandono silencioso cambia el CLV
  • Cómo construir tu primer scorecard paso a paso

Publicado en: JavaScript Etiquetado como: Node, TypeScript

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Migrar tslane a un paquete dual CommonJS y ESM con tsup y Vitest

octubre 1, 2026 Por Daniel Rodríguez

Cómo construir tu primer scorecard paso a paso

septiembre 29, 2026 Por Daniel Rodríguez

Actualizar expresslanets a ES Modules con tsx y Vitest

septiembre 24, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Instantáneas de VirtualBox (Snapshots) publicado el marzo 27, 2019 | en Herramientas
  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • Cómo construir tu primer scorecard paso a paso publicado el septiembre 29, 2026 | en Ciencia de datos
  • Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios publicado el septiembre 18, 2025 | en Ciencia de datos, Opinión

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.1 (11)

Aplicar el método D’Hondt en Excel

Comentarios recientes

  • Daniel Rodríguez en Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios
  • Hatepi en Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios
  • Daniel Rodríguez en Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)
  • Juan en Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)
  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto