kopia lustrzana https://github.com/dceejay/electron-node-red
Add merger capability to make grabbing projects easier
rodzic
1ec358a110
commit
38eaac77e6
|
@ -45,6 +45,12 @@ then retry the command.
|
|||
|
||||
Runtimes are created in the `dist` directory under the `electron-node-red` project.
|
||||
|
||||
The `merger.js` utility can be pointed at an existing Node-RED projects directory and it will try to copy over and package up the relevant files into this project ready to install and build - so the simple flow would be
|
||||
|
||||
```
|
||||
./merger.js {path to my Node-RED project directory} && yarn && yarn start
|
||||
```
|
||||
|
||||
### Building for other platforms
|
||||
|
||||
Generally you can just add the required parameter to the command
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
{"$":"8dbcfcd6d9f25932aa00994065774d5ctxk="}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"name": "electron_node_red",
|
||||
"description": "Electron Node-RED application starter kit for development",
|
||||
"version": "1.0.2",
|
||||
"dependencies": {
|
||||
"node-red-contrib-play-audio": "*",
|
||||
"node-red-contrib-web-worldmap": "*",
|
||||
"node-red-dashboard": "*",
|
||||
"node-red-node-base64": "*",
|
||||
"node-red-node-geofence": "*",
|
||||
"node-red-node-random": "*",
|
||||
"node-red-node-smooth": "*"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "node node_modules/node-red/red.js -u . electronflow.json"
|
||||
}
|
||||
}
|
2
main.js
2
main.js
|
@ -50,7 +50,7 @@ red_app.use("/",express.static("web"));
|
|||
// Create a server
|
||||
var server = http.createServer(red_app);
|
||||
|
||||
// Setup user directory and flowfile
|
||||
// Setup user directory and flowfile (if editable)
|
||||
var userdir = __dirname;
|
||||
if (editable) {
|
||||
// if running as raw electron use the current directory (mainly for dev)
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const fs = require("fs");
|
||||
const path = require('path');
|
||||
const pkg = require("./package-template.json");
|
||||
|
||||
let arg = "./example";
|
||||
let flowfile = null;
|
||||
let dn = arg;
|
||||
let app;
|
||||
if (process.argv.length === 3 ) {
|
||||
arg = process.argv[2];
|
||||
|
||||
let dn = path.dirname(arg);
|
||||
if (path.extname(arg) === ".json") {
|
||||
if (path.basename(arg, '.json') !== "package") {
|
||||
flowfile = path.basename(arg);
|
||||
app = require(path.join(dn, "package.json"));
|
||||
}
|
||||
else {
|
||||
app = require(arg);
|
||||
}
|
||||
}
|
||||
else {
|
||||
app = require(path.join(arg, "package.json"));
|
||||
dn = arg;
|
||||
}
|
||||
}
|
||||
else {
|
||||
app = require(arg+"/package.json");
|
||||
}
|
||||
|
||||
const merge = {
|
||||
...app.dependencies,
|
||||
...pkg.dependencies
|
||||
};
|
||||
|
||||
pkg.dependencies = merge;
|
||||
// Try to get flow file name
|
||||
if (app.hasOwnProperty("node-red") && app["node-red"].hasOwnProperty("settings") && app["node-red"].settings.hasOwnProperty("flowFile") ) {
|
||||
pkg.NRelectron.flowFile = app["node-red"].settings.flowFile;
|
||||
}
|
||||
else if (app.hasOwnProperty("scripts") && app.scripts.hasOwnProperty("start")) {
|
||||
pkg.NRelectron.flowFile = app.scripts.start.split(' ').pop();
|
||||
}
|
||||
else {
|
||||
pkg.NRelectron.flowFile = flowfile || "flow.json";
|
||||
}
|
||||
|
||||
if (merge.hasOwnProperty("node-red-dashboard")) {
|
||||
pkg.NRelectron.start = "dashboard";
|
||||
}
|
||||
pkg.name = app.name;
|
||||
pkg.version = app.version;
|
||||
pkg.description = app.description;
|
||||
// console.log(pkg);
|
||||
|
||||
fs.copyFile(path.join(arg, pkg.NRelectron.flowFile), path.join("./", pkg.NRelectron.flowFile), (err) => {
|
||||
if (err) { console.log("Failed to copy flows file - "+path.join(arg, pkg.NRelectron.flowFile)); }
|
||||
else { console.log('Copied flows file - '+pkg.NRelectron.flowFile); }
|
||||
});
|
||||
const creds = path.basename(pkg.NRelectron.flowFile,".json")+"_cred.json";
|
||||
fs.copyFile(path.join(arg, creds), path.join("./", creds), (err) => {
|
||||
if (err) { console.log("Failed to copy creds file - "+path.join(arg, creds)); }
|
||||
else { console.log('Copied creds file - '+creds); }
|
||||
});
|
||||
|
||||
fs.writeFile("./package.json", JSON.stringify(pkg, null, 4), 'utf8', function (err) {
|
||||
if (err) { console.log("Failed to re-write package.json file."); }
|
||||
else {
|
||||
console.log("Merged package.json.");
|
||||
}
|
||||
});
|
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"name": "electron_node_red",
|
||||
"version": "1.0.2",
|
||||
"description": "Electron Node-RED application starter kit for development",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"pack": "electron-builder --dir",
|
||||
"dist": "electron-builder",
|
||||
"release": "electron-builder build -p always",
|
||||
"postinstall": "electron-builder install-app-deps",
|
||||
"start": "electron main.js",
|
||||
"test": "echo \" Warning: no test specified \""
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/dceejay/electron-node-red.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"electron-is-dev": "*",
|
||||
"express": "^4.17.1",
|
||||
"node-red": "1.0.2"
|
||||
},
|
||||
"keywords": [
|
||||
"electron",
|
||||
"quick start",
|
||||
"node-red"
|
||||
],
|
||||
"author": {
|
||||
"name": "Dave Conway-Jones",
|
||||
"email": "dceejay@gmail.com"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/dceejay/electron-node-red/issues"
|
||||
},
|
||||
"homepage": "https://github.com/dceejay/electron-node-red#readme",
|
||||
"devDependencies": {
|
||||
"electron": "^7.1.1",
|
||||
"electron-builder": "^22.1.0"
|
||||
},
|
||||
"NRelectron": {
|
||||
"productName": "Node-RED Electron",
|
||||
"editable": true,
|
||||
"allowLoadSave": false,
|
||||
"showMap": false,
|
||||
"kioskMode": false,
|
||||
"flowFile": "electronflow.json",
|
||||
"start": "editor"
|
||||
},
|
||||
"build": {
|
||||
"appId": "com.electron.node-red",
|
||||
"productName": "Node-RED Electron",
|
||||
"copyright": "Copyright © 2019 D.Conway-Jones",
|
||||
"mac": {
|
||||
"category": "public.app-category.developer-tools",
|
||||
"target": "dmg"
|
||||
},
|
||||
"linux": {
|
||||
"target": [
|
||||
"rpm",
|
||||
"apk",
|
||||
{
|
||||
"target": "deb",
|
||||
"arch": [
|
||||
"x64",
|
||||
"armv7l"
|
||||
]
|
||||
}
|
||||
],
|
||||
"synopsis": "Node-RED Low Code development",
|
||||
"category": "Development"
|
||||
},
|
||||
"win": {
|
||||
"target": [
|
||||
{
|
||||
"target": "msi",
|
||||
"arch": [
|
||||
"x64"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
12
package.json
12
package.json
|
@ -16,16 +16,16 @@
|
|||
"url": "git+https://github.com/dceejay/electron-node-red.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"electron-is-dev": "*",
|
||||
"express": "^4.17.1",
|
||||
"node-red": "1.0.2",
|
||||
"node-red-contrib-play-audio": "*",
|
||||
"node-red-contrib-web-worldmap": "*",
|
||||
"node-red-dashboard": "*",
|
||||
"node-red-node-base64": "*",
|
||||
"node-red-node-geofence": "*",
|
||||
"node-red-node-random": "*",
|
||||
"node-red-node-smooth": "*"
|
||||
"node-red-node-smooth": "*",
|
||||
"electron-is-dev": "*",
|
||||
"express": "^4.17.1",
|
||||
"node-red": "1.0.2"
|
||||
},
|
||||
"keywords": [
|
||||
"electron",
|
||||
|
@ -50,7 +50,7 @@
|
|||
"editable": true,
|
||||
"allowLoadSave": false,
|
||||
"showMap": false,
|
||||
"kioskMode": false,
|
||||
"kioskMode": false,
|
||||
"flowFile": "electronflow.json",
|
||||
"start": "dashboard"
|
||||
},
|
||||
|
@ -88,4 +88,4 @@
|
|||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Ładowanie…
Reference in New Issue