versionering - Hur får man versionen från package.json i Typescript?


Jag har hittat denna frågestund.

Jag har försökt få versionen från package.json med:

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

men det resulterar i:

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

Svar #1

Sättet jag gillar att göra detta utan att kräva webpack eller några andra beroenden är att lägga till ett prebuild-skript i package.json som skriver versionen till en TypeScript-källfil som kan importeras någon annanstans.

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

Detta kör node.js med flaggan -p/--print som utvärderar följande kod:

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

och skickar utdata till src/version.ts

Detta resulterar i att src/version.ts innehåller:

export const LIB_VERSION = "1.0.0";

Du kan sedan helt enkelt importera och använda detta från andra filer:

import { LIB_VERSION } from './version';

Du vill förmodligen utesluta src/version.ts från källkontroll så att dess ändringar inte skräpar ner din ändringshistorik!

Svar #2

Om du är i en CommonJS-miljö, varför inte helt enkelt använda

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

REDIGERA

Eftersom du verkar använda webpack, lägg bara till lämplig loader

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

som du uppenbarligen behöver installera med npm install

Relaterade artiklar