Как создавать разные версии с переменными среды - PullRequest
0 голосов
/ 25 декабря 2018

Согласно это невозможно установить флаги в электронном приложении с переменными среды.Мне все еще нужно создать разные версии приложения для dev, staging, pilot и prod.

Внутренне я хотел бы использовать electron-node-config, потому что это просто.Но поскольку у меня нет доступа к переменным среды, невозможно использовать node-config.

. Поэтому я подумал о наличии нескольких сценариев ввода, таких как

// index.dev.js
require('./main')({ APP_URL: 'localhost:8080' });

// index.staging.js
require('./main')({ APP_URL: 'https://staging.foo.com' });

// pilot.staging.js
require('./main')({ APP_URL: 'https://pilot.foo.com' });

Где выглядит мой файл main.js более или менее как этот

module.exports = (config) => {
  app.on('ready', () => {
    mainWindow.loadURL(config.APP_URL);
  });
};

Однако в документах для электронных строителей, кажется, нет опции для указания файла ввода, он всегда использует index.js для упаковкиприложения, и не так много написано в документации для js api, кроме

const builder = require('electron-builder');
const env = process.env.NODE_ENV;
const entry = `index.${env}.js`;

builder.build({
  entry,
  appId: 'com.electron.foo',
  productName: 'foo',
  mac: {
    target: 'zip'
  },
  win: {
    target: 'portable'
  },
  portable: {
    artifactName: 'foo.exe'
  }
});

Поэтому я попытался настроить свой package.json следующим образом

"scripts": {
  "build:staging": "NODE_ENV=development node scripts/build",
  "build:pilot": "NODE_ENV=pilot node scripts/build",
  "build:production": "NODE_ENV=production node scripts/build"
}

Однако яЯ действительно не уверен, как установить входной файл для конфигурации электронного строителя.Как мне указать входной файл?

1 Ответ

0 голосов
/ 27 декабря 2018

Я сделал это с помощью скрипта hacky bash

#!bin/bash

# make tmp package.json
cp package.json _package.json

# set entry file
sed -i '' "s/index.js/index.$1.js/" package.json

# set output folder
sed -i '' "s/TARGET/$1/" package.json

# package app
npm run build

# get rid of electron config package.json
rm package.json

# "reset" old package.json
mv _package.json package.json

, и мои скрипты package.json выглядят как

{
  "postinstall": "electron-builder install-app-deps",
  "reinstall": "rm -rf node_modules/ && npm i",
  "start": "NODE_ENV=development electron src/index.development.js",
  "build": "build -mw",
  "build:development": "sh scripts/build.sh development",
  "build:pilot": "sh scripts/build.sh pilot",
  "build:pilot2": "sh scripts/build.sh pilot2",
  "build:production": "sh scripts/build.sh production",
  "build:all":
    "npm run build:development && npm run build:pilot && npm run build:pilot2 && npm run build:production",
  "test": "npm run postinstall && jest"
}
...