electron-builder で Lint および UnitTest が通った場合のみビルドするようにする
- POST
経緯 electron にて ビルドするのに electron-builder を使用してみた
その際に最低限 Lint, UnitTest を通ることを担保するようにしたため備忘録として残しておく
構築環境 electron: 5.0.1 electron-builder: 20.39.0 実際のコード package.json に以下の定義がしてある前提 ※以下は electron x angular(Angular Cli で生成)
{ ・・・ "scripts": { "ng": "ng", "start": "ng build --prod && electron .", "build": "ng build", "test": "jest", "lint": "ng lint", "postinstall": "electron-builder install-app-deps", "release": "ng build --prod && node build.js", }, ・・・ } electron-builder のオプションについては公式を参照
'use strict'; const builder = require('electron-builder'); const Platform = builder.Platform; const childProcess = require('child_process'); const unitTest = new Promise((resolve, reject) => { childProcess.exec('yarn test', (error, stdout) => { if (error) { // エラー時は例外を投げる reject(new Error(stdout + error)); } resolve('UnitTest OK!'); }); }); const lint = new Promise((resolve, reject) => { childProcess.exec('yarn lint', (error, stdout) => { if (error) { // エラー時は例外を投げる reject(new Error(stdout + error)); } resolve('Lint OK!'); }); }); const build = () => { builder .build({ targets: Platform.WINDOWS.createTarget(), config: { directories: { output: 'release', buildResources: 'dist', }, productName: 'Example App', files: ['**/*', 'dist/**/*'], win: { target: [ { target: 'nsis', arch: ['x64'], }, ], }, nsis: { createDesktopShortcut: 'always', }, }, }) .then(() => { console.log('Build OK!'); }) .catch((error) => { console.log(error); }); }; Promise.all([lint, unitTest]) .then((values) => { console.log(values.join('\n')); build(); }) .catch((error) => { console.log(error.message); });