Help us understand the problem. What is going on with this article?

Electronで設定ファイルを扱う

More than 1 year has passed since last update.

electron-config一択。

sindresorhus/electron-config: Simple config handling for your Electron app or module

性質上設定ファイルは起動時に読み込みや終了時に設定の保存などに使われる。
ここでの処理がコールバックスタイルで書かれるelectron-json-storageは扱いづらいだけと個人的には思う。

名前の変更

今(2018-06-13)はelectron-storeに名前が変わっています。

sindresorhus/electron-store: Simple data persistence for your Electron app or module - Save and load user preferences, app state, cache, etc

インストール

$ npm install --save electron-config

使い方

公式のUsageそのままだが、使い方に迷うことないだろう。
面白い点としてdot-notationをサポートしてる。
いちいちオブジェクトを作らずfoo.barと文字列で保存できるのは便利だ。

もちろん、メインとレンダラープロセスの両方で使える。

const Config = require('electron-config');
const config = new Config();

config.set('unicorn', '🦄');
console.log(config.get('unicorn'));
//=> '🦄'

// use dot-notation to access nested properties
config.set('foo.bar', true);
console.log(config.get('foo'));
//=> {bar: true}

config.delete('unicorn');
console.log(config.get('unicorn'));
//=> undefined

色々省略したけどだいたいこんな感じにすれば、移動時やリサイズ時にウィンドウの設定が保存される。
それを起動時に読む込んでやるだけで前回のウィンドウが復元される。

const Config = require('electron-config')

const config = new Config({
    defaults: {
        bounds: {
            width: 800,
            height: 600,
        },
    },
})

function createMainWindow() {
    const {width, height, x, y} = config.get('bounds')
    const win = new BrowserWindow({title: 'sample', width, height, x, y})

    win.loadURL(`file://${__dirname}/index.html`)

    ['resize', 'move'].forEach(ev => {
        win.on(ev, () => {
            config.set('bounds', win.getBounds())
        })
    })
}

app.on('ready', () => {
    mainWindow = createMainWindow()
})
akameco
シュレーディンガーの社会人.js
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away