Есть ли способ получить версию из package.json в коде nodejs? - PullRequest
490 голосов
/ 06 февраля 2012

Есть ли способ получить версию, установленную в package.json, в приложении nodejs?Я хотел бы что-то вроде этого

var port = process.env.PORT || 3000
app.listen port
console.log "Express server listening on port %d in %s mode %s", app.address().port, app.settings.env, app.VERSION

Ответы [ 18 ]

3 голосов
/ 14 января 2019

Вы можете использовать ES6 для импорта package.json для получения номера версии и вывода версии на консоль.

import {name as app_name, version as app_version}  from './path/to/package.json';

console.log(`App ---- ${app_name}\nVersion ---- ${app_version}`);
2 голосов
/ 23 апреля 2019

Чтобы определить версию пакета в коде узла, вы можете использовать следующее:

  1. const version = require('./package.json').version; для <версий ES6 </p>

  2. import {version} from './package.json'; для версии ES6

  3. const version = process.env.npm_package_version; если приложение было запущено с использованием npm start, все переменные среды npm_ * становятся доступными.

  4. Вы также можете использовать следующие пакеты npm - root-require, pkginfo, project-version.

1 голос
/ 18 января 2015

Я делаю это с findup-sync:

var findup = require('findup-sync');
var packagejson = require(findup('package.json'));
console.log(packagejson.version); // => '0.0.1' 
1 голос
/ 09 марта 2017

Я знаю, что это не цель ОП, но я просто должен был это сделать, поэтому надеюсь, что это поможет следующему человеку.

Если вы используете docker-compose для своего CI / CDпроцесс, вы можете получить это таким образом!

version:
  image: node:7-alpine
  volumes:
    - .:/usr/src/service/
  working_dir: /usr/src/service/
  command: ash -c "node -p \"require('./package.json').version.replace('\n', '')\""

для изображения, вы можете использовать любой узел изображения.Я использую альпийский, потому что он самый маленький.

0 голосов
/ 03 июля 2019

Почему бы не использовать требуемое разрешение ...

const packageJson = path.dirname(require.resolve('package-name')) + '/package.json';
const { version } = require(packageJson);
console.log('version', version)

При таком подходе работайте для всех подпутей :)

0 голосов
/ 08 ноября 2018

Я сделал полезный код для получения пакета родительского модуля. Json

function loadParentPackageJson() {
    if (!module.parent || !module.parent.filename) return null
    let dir = path.dirname(module.parent.filename)
    let maxDepth = 5
    let packageJson = null
    while (maxDepth > 0) {
        const packageJsonPath = `${dir}/package.json`
        const exists = existsSync(packageJsonPath)
        if (exists) {
            packageJson = require(packageJsonPath)
            break
        }
        dir = path.resolve(dir, '../')
        maxDepth--
    }
    return packageJson
}
0 голосов
/ 01 августа 2018

Импортируйте ваш package.json файл в ваши server.js или app.js и затем получите доступ к свойствам package.json в файл сервера.

var package = require('./package.json');

Переменная пакета содержит все данные в package.json.

0 голосов
/ 23 декабря 2015

почему бы не использовать родной способ?другие методы не помогли мне.

// Load native UI library
var gui = require('nw.gui');

// Get the name field in manifest
gui.App.manifest.version
...