fix: using chokidar instead of npm-watch (issue #4)
This commit is contained in:
1513
package-lock.json
generated
1513
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
21
package.json
21
package.json
@@ -23,21 +23,12 @@
|
|||||||
"workspaces/angular-app",
|
"workspaces/angular-app",
|
||||||
"workspaces/shared-lib"
|
"workspaces/shared-lib"
|
||||||
],
|
],
|
||||||
"watch": {
|
|
||||||
"restart-electron-app": {
|
|
||||||
"patterns": [
|
|
||||||
"workspaces/electron-app",
|
|
||||||
"workspaces/shared-lib"
|
|
||||||
],
|
|
||||||
"extensions": "ts,tsx"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "npm-run-all -p start:shared-lib start:angular-app start:electron-app",
|
"start": "npm-run-all -p start:shared-lib start:angular-app start:electron-app",
|
||||||
"start:shared-lib": "tsc -b workspaces/shared-lib -w",
|
"start:shared-lib": "tsc -b workspaces/shared-lib -w",
|
||||||
"start:angular-app": "cd workspaces/angular-app && npm run start",
|
"start:angular-app": "wait-on workspaces/shared-lib/.dist/index.d.ts && cd workspaces/angular-app && npm run start",
|
||||||
"start:electron-app": "wait-on http://localhost:4200 && npm-watch restart-electron-app",
|
"start:electron-app": "node scripts/electron-forge-start-watch.js",
|
||||||
"restart-electron-app": "electron-forge start",
|
"start:electron-app:once": "wait-on http://localhost:4200 && electron-forge start",
|
||||||
"package": "npm run package:angular-app && npm run package:electron-app",
|
"package": "npm run package:angular-app && npm run package:electron-app",
|
||||||
"package:angular-app": "cd workspaces/angular-app && npm run package",
|
"package:angular-app": "cd workspaces/angular-app && npm run package",
|
||||||
"package:electron-app": "electron-forge package",
|
"package:electron-app": "electron-forge package",
|
||||||
@@ -49,10 +40,8 @@
|
|||||||
"start:angular-e2e": "wait-on http://localhost:4200 && cd workspaces/angular-app && npm run cypress:run",
|
"start:angular-e2e": "wait-on http://localhost:4200 && cd workspaces/angular-app && npm run cypress:run",
|
||||||
"test:electron-e2e": "npm run package && cross-env X_NODE_ENV=e2e-test node workspaces/electron-e2e/jasmine.js",
|
"test:electron-e2e": "npm run package && cross-env X_NODE_ENV=e2e-test node workspaces/electron-e2e/jasmine.js",
|
||||||
"clean": "shx rm -rf .webpack out node_modules workspaces/shared-lib/.dist workspaces/angular-app/node_modules workspaces/angular-app/.dist",
|
"clean": "shx rm -rf .webpack out node_modules workspaces/shared-lib/.dist workspaces/angular-app/node_modules workspaces/angular-app/.dist",
|
||||||
"version": "npx conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",
|
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
"postinstall": "husky install && shx rm -rf .git/hooks && shx ln -s ../.husky .git/hooks",
|
"postinstall": "husky install && shx rm -rf .git/hooks && shx ln -s ../.husky .git/hooks",
|
||||||
"release": "standard-version",
|
|
||||||
"release:minor": "standard-version --release-as minor",
|
"release:minor": "standard-version --release-as minor",
|
||||||
"release:patch": "standard-version --release-as patch",
|
"release:patch": "standard-version --release-as patch",
|
||||||
"release:major": "standard-version --release-as major"
|
"release:major": "standard-version --release-as major"
|
||||||
@@ -116,7 +105,7 @@
|
|||||||
"@typescript-eslint/eslint-plugin": "^4.0.1",
|
"@typescript-eslint/eslint-plugin": "^4.0.1",
|
||||||
"@typescript-eslint/parser": "^4.0.1",
|
"@typescript-eslint/parser": "^4.0.1",
|
||||||
"@vercel/webpack-asset-relocator-loader": "^1.6.0",
|
"@vercel/webpack-asset-relocator-loader": "^1.6.0",
|
||||||
"conventional-changelog-cli": "^2.1.1",
|
"chokidar-cli": "^3.0.0",
|
||||||
"copy-webpack-plugin": "^9.0.1",
|
"copy-webpack-plugin": "^9.0.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"css-loader": "^5.0.0",
|
"css-loader": "^5.0.0",
|
||||||
@@ -133,12 +122,12 @@
|
|||||||
"lint-staged": "^11.0.1",
|
"lint-staged": "^11.0.1",
|
||||||
"node-loader": "^2.0.0",
|
"node-loader": "^2.0.0",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"npm-watch": "^0.10.0",
|
|
||||||
"prettier": "^2.3.2",
|
"prettier": "^2.3.2",
|
||||||
"shx": "^0.3.3",
|
"shx": "^0.3.3",
|
||||||
"spectron": "^15.0.0",
|
"spectron": "^15.0.0",
|
||||||
"standard-version": "^9.3.1",
|
"standard-version": "^9.3.1",
|
||||||
"style-loader": "^2.0.0",
|
"style-loader": "^2.0.0",
|
||||||
|
"tree-kill": "^1.2.2",
|
||||||
"ts-loader": "^9.2.2",
|
"ts-loader": "^9.2.2",
|
||||||
"ts-node": "^10.1.0",
|
"ts-node": "^10.1.0",
|
||||||
"typescript": "^4.3.5",
|
"typescript": "^4.3.5",
|
||||||
|
|||||||
46
scripts/electron-forge-start-watch.js
Normal file
46
scripts/electron-forge-start-watch.js
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
const spawn = require('child_process').spawn;
|
||||||
|
const chokidar = require('chokidar');
|
||||||
|
const kill = require('tree-kill');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
class ElectronForgeRunner {
|
||||||
|
constructor() {
|
||||||
|
this.__init__();
|
||||||
|
}
|
||||||
|
|
||||||
|
__init__ = () => {
|
||||||
|
this.args = process.argv;
|
||||||
|
this.command = this.args[2];
|
||||||
|
this.cwd = process.cwd();
|
||||||
|
this.watchPaths = [
|
||||||
|
path.join(this.cwd, '/workspaces/electron-app/**/*.ts'),
|
||||||
|
path.join(this.cwd, '/workspaces/shared-lib/.dist/**/*.ts'),
|
||||||
|
];
|
||||||
|
this.ignoredPaths = '**/node_modules/*';
|
||||||
|
|
||||||
|
this.startWatching();
|
||||||
|
this.reload();
|
||||||
|
};
|
||||||
|
|
||||||
|
reload = () => {
|
||||||
|
if (this.childProcess) kill(this.childProcess.pid);
|
||||||
|
this.childProcess = spawn('npm run start:electron-app:once', [], {
|
||||||
|
shell: true,
|
||||||
|
stdio: 'inherit',
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
startWatching = () => {
|
||||||
|
chokidar
|
||||||
|
.watch(this.watchPaths, {
|
||||||
|
ignored: this.ignoredPaths,
|
||||||
|
ignoreInitial: true,
|
||||||
|
})
|
||||||
|
.on('all', (event, path) => {
|
||||||
|
this.reload();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
new ElectronForgeRunner();
|
||||||
@@ -31,5 +31,4 @@ if (process.env.X_NODE_ENV === 'e2e-test') {
|
|||||||
contextBridge.exposeInMainWorld('api', windowApi);
|
contextBridge.exposeInMainWorld('api', windowApi);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(typeof window);
|
|
||||||
console.log('The preload script has been injected successfully.');
|
console.log('The preload script has been injected successfully.');
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
export declare class WindowApiConst {
|
|
||||||
/** Channel used by the renderer process to send data to the main process */
|
|
||||||
static readonly MULTIPLES_INPUT = 'getMultiplesInput';
|
|
||||||
/** Channel used by the renderer process to receive data from the main process */
|
|
||||||
static readonly MULTIPLES_OUTPUT = 'getMultiplesOutput';
|
|
||||||
/** Whitelist of the safe channels to use when sending data to the main process */
|
|
||||||
static readonly SENDING_SAFE_CHANNELS: string[];
|
|
||||||
/** Whitelist of the safe channels to use when receiving data from the main process */
|
|
||||||
static readonly RECEIVING_SAFE_CHANNELS: string[];
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
export class WindowApiConst {}
|
|
||||||
/** Channel used by the renderer process to send data to the main process */
|
|
||||||
WindowApiConst.MULTIPLES_INPUT = 'getMultiplesInput';
|
|
||||||
/** Channel used by the renderer process to receive data from the main process */
|
|
||||||
WindowApiConst.MULTIPLES_OUTPUT = 'getMultiplesOutput';
|
|
||||||
/** Whitelist of the safe channels to use when sending data to the main process */
|
|
||||||
WindowApiConst.SENDING_SAFE_CHANNELS = [WindowApiConst.MULTIPLES_INPUT];
|
|
||||||
/** Whitelist of the safe channels to use when receiving data from the main process */
|
|
||||||
WindowApiConst.RECEIVING_SAFE_CHANNELS = [WindowApiConst.MULTIPLES_OUTPUT];
|
|
||||||
//# sourceMappingURL=window-api-consts.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"window-api-consts.js","sourceRoot":"","sources":["../../apis/window-api-consts.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;;AACzB,4EAA4E;AACrD,8BAAe,GAAG,mBAAmB,CAAC;AAE7D,iFAAiF;AAC1D,+BAAgB,GAAG,oBAAoB,CAAC;AAE/D,kFAAkF;AAC3D,oCAAqB,GAAG;IAC7C,cAAc,CAAC,eAAe;CAC/B,CAAC;AAEF,sFAAsF;AAC/D,sCAAuB,GAAG;IAC/C,cAAc,CAAC,gBAAgB;CAChC,CAAC"}
|
|
||||||
14
workspaces/shared-lib/.dist/apis/window-api.d.ts
vendored
14
workspaces/shared-lib/.dist/apis/window-api.d.ts
vendored
@@ -1,14 +0,0 @@
|
|||||||
export interface WindowApi {
|
|
||||||
/**
|
|
||||||
* This method is used by the renderer process to receive data from the main process
|
|
||||||
* @param channel used by the renderer to receive data and by the main to send them
|
|
||||||
* @param func the callback function to execute when data are available
|
|
||||||
*/
|
|
||||||
receive<Out>(channel: string, func: (output: Out) => void): void;
|
|
||||||
/**
|
|
||||||
* This method is used by the renderer process to send data to the main process
|
|
||||||
* @param channel used by the renderer to send data and by the main to receive them
|
|
||||||
* @param data the data sent by the renderer process to the main process
|
|
||||||
*/
|
|
||||||
send<In>(channel: string, input: In): void;
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export {};
|
|
||||||
//# sourceMappingURL=window-api.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"window-api.js","sourceRoot":"","sources":["../../apis/window-api.ts"],"names":[],"mappings":""}
|
|
||||||
9
workspaces/shared-lib/.dist/index.d.ts
vendored
9
workspaces/shared-lib/.dist/index.d.ts
vendored
@@ -1,9 +0,0 @@
|
|||||||
import { WindowApi } from './apis/window-api';
|
|
||||||
export * from './apis/window-api';
|
|
||||||
export * from './apis/window-api-consts';
|
|
||||||
export * from './models/config/app-config';
|
|
||||||
declare global {
|
|
||||||
interface Window {
|
|
||||||
api: WindowApi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
export * from './apis/window-api';
|
|
||||||
export * from './apis/window-api-consts';
|
|
||||||
export * from './models/config/app-config';
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC"}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
export interface AppConfig {
|
|
||||||
/** The configuration identifier */
|
|
||||||
configId: string;
|
|
||||||
/** The main logger output file path */
|
|
||||||
mainLogFile: string;
|
|
||||||
/** The main logger output level */
|
|
||||||
mainLogLevel: string;
|
|
||||||
/** Tells if we should try to load app icon */
|
|
||||||
isIconAvailable: boolean;
|
|
||||||
/** Tells if `nodeIntegration` webPreference is enabled */
|
|
||||||
isNodeIntegration: boolean;
|
|
||||||
/** Tells if `contextIsolation` and `worldSafeExecuteJavaScript` webPreferences are enabled */
|
|
||||||
isContextIsolation: boolean;
|
|
||||||
/** Tells if `isEnableRemoteModule` webPreference is enabled */
|
|
||||||
isEnableRemoteModule: boolean;
|
|
||||||
/** Tells if we should open dev tools */
|
|
||||||
isOpenDevTools: boolean;
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export {};
|
|
||||||
//# sourceMappingURL=app-config.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../models/config/app-config.ts"],"names":[],"mappings":""}
|
|
||||||
2
workspaces/shared-lib/.gitignore
vendored
Normal file
2
workspaces/shared-lib/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Generated JS files
|
||||||
|
/.dist
|
||||||
Reference in New Issue
Block a user