Введение

Я видел, как многие пользователи импортируют package.json прямо в проект node.js. Это программная катастрофа, поскольку это может привести к утечке вашей конфиденциальной информации, такой как скрипты или частные ТОКЕНЫ, в связанные файлы js. Нет единого четкого решения, чтобы сделать это в электронном приложении. С этим нужно справляться с умом, используя алгоритмы и откат. Изначально это было реализовано в OpenMTP - Расширенное приложение для передачи файлов Android для macOS.

Выполнение

  • Установить пакеты npm
$ npm install electron-root-path
or 
$ yarn add electron-root-path
  • Добавьте приведенный ниже код в файл webpack.config.js (как для производства, так и для разработки)
import { rootPath } from 'electron-root-path';
const pkg = require(join(rootPath, 'package.json'));
plugins: [
    new webpack.DefinePlugin({
      PKG_INFO: {
        productName: JSON.stringify(pkg.productName),
        description: JSON.stringify(pkg.description),
        name: JSON.stringify(pkg.name),
        author: JSON.stringify(pkg.author),
        version: JSON.stringify(pkg.version),
        repository: JSON.stringify(pkg.repository),
        homepage: JSON.stringify(pkg.homepage)
      }
    }),
  ]
  • Создайте файл ./app/pkginfo.js и добавьте приведенный ниже код.
'use strict';
import { join } from 'path';
import { readFileSync } from 'fs';
import { rootPath } from 'electron-root-path';
let _pkginfo = {};
// eslint-disable-next-line no-undef
if (typeof PKG_INFO !== 'undefined' && PKG_INFO !== null) {
  // eslint-disable-next-line no-undef
  _pkginfo = PKG_INFO;
} else {
  /* This is a fallback incase the webpack DefinePlugin modules hasn't been initialized yet. */
  /* Developement mode only */
  _pkginfo = JSON.parse(
    readFileSync(join(rootPath, 'package.json'), { encoding: 'utf8' })
  );
}
export const pkginfo = _pkginfo;

Больше репо

Лицензия

tutorial-electronic-nodejs-import-packageinfo выпущен под лицензией MIT.

Авторские права © 2018-настоящее время Ганеш Ратинавель