versjonering - Hvordan hente versjonen fra package.json i Typescript?


Jeg har funnet denne spørsmål-og-svar.

Jeg har prøvd å få tak i versjonen fra package.json ved å bruke:

import { version } from './package.json';

men det resulterer i:

package.json' has unsupported extension. The only supported extensions are '.ts',
'.tsx', '.d.ts'.

Svar #1

Måten jeg liker å gjøre dette på uten å kreve webpack eller andre avhengigheter er å legge til et prebuild-skript i package.json som skriver versjonen til en TypeScript-kildefil som kan importeres andre steder.

  "scripts": {
    "prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts",
    "build": "tsc",
  }

Dette kjører node.js med -p/--print-flagget som evaluerer følgende kode:

'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'

og videresender utdataene til src/version.ts

Dette resulterer i at src/version.ts inneholder:

export const LIB_VERSION = "1.0.0";

Du kan deretter enkelt importere og bruke dette fra andre filer:

import { LIB_VERSION } from './version';

Du vil sannsynligvis utelate src/version.ts fra kildekontroll slik at endringene ikke rotet til endringsloggen din!

Svar #2

Hvis du er i et CommonJS-miljø, hvorfor ikke bare bruke

const pj = require('./package.json')
console.log(pj.version)

REDIGER

Siden du ser ut til å bruke webpack, bare legg til den passende loaderen

   module: {
    loaders: [
        ...
        {test: /\.json$/, loader: 'json-loader'},
        ....

som du åpenbart må installere ved å bruke npm install

Relaterte artikler