mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-28 18:00:09 +00:00
166 lines
3.6 KiB
Plaintext
Executable File
166 lines
3.6 KiB
Plaintext
Executable File
In general
|
|
----------
|
|
|
|
The idea is to make the project as simple as possible and the dev cycle
|
|
as efficient as possible, for this reason only one lib manager is used
|
|
(npm), only one build system (make) and any translation layers are
|
|
avoided (less is likely to be phased out).
|
|
|
|
With this approach for most cases and for testing in the browser after
|
|
the initial setup only refreshing the page is required to load most of
|
|
the changes (./css/layout.less being the only exception).
|
|
|
|
|
|
|
|
General environment
|
|
-------------------
|
|
|
|
ImageGrid will require the following installed and in path:
|
|
- bash
|
|
- make (GNU Make)
|
|
- git
|
|
- wget
|
|
- zip / unzip / zipnote
|
|
- grep / egrep / fgrep
|
|
- sed
|
|
|
|
|
|
Some more dependencies will be installed by make via npm locally.
|
|
|
|
|
|
Dependencies can be checked with:
|
|
|
|
$ make check
|
|
|
|
|
|
|
|
Then the build system/process is generally the same on all platforms:
|
|
|
|
- Clone the repository:
|
|
|
|
$ git clone https://github.com/flynx/ImageGrid.git
|
|
|
|
|
|
- Build the dev envioronment (bash):
|
|
|
|
$ make dev
|
|
|
|
|
|
- Run in-place:
|
|
|
|
$ make run
|
|
|
|
|
|
- Build a distro:
|
|
|
|
$ make dist
|
|
|
|
|
|
|
|
Windows environment
|
|
-------------------
|
|
|
|
This will require a UN*X-like build environment to run make and friends.
|
|
|
|
|
|
One way to go about this is (admin PowerShell):
|
|
|
|
- Install Chocolate
|
|
|
|
> Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
|
|
|
|
|
For more info see: https://chocolatey.org/install
|
|
|
|
|
|
- Install git-bash based env:
|
|
|
|
> choco install git nodejs wget zip sed grep
|
|
|
|
|
|
Now we can proceed with the normal build.
|
|
|
|
|
|
|
|
The Makefile
|
|
------------
|
|
|
|
For make help to work make requires: bash, sed, grep/fgrep and printf to
|
|
be available in the path, run this to double check:
|
|
|
|
$ make check-help
|
|
|
|
|
|
To check the full list of dependencies run:
|
|
|
|
$ make check
|
|
|
|
|
|
The make file is largely self-documented so run this for more info:
|
|
|
|
$ make help
|
|
|
|
|
|
|
|
Sharp and other native modules for nw/electron
|
|
----------------------------------------------
|
|
|
|
And for electron (done by make):
|
|
|
|
electron-rebuild
|
|
|
|
|
|
To build sharp for a specific version of node and nwjs (outdated):
|
|
|
|
cd ./node_modules/sharp/
|
|
nw-gyp rebuild --target=0.17.4 --arch=x64
|
|
|
|
|
|
|
|
Chromium flicker issue (nw/outdated)
|
|
------------------------------------
|
|
|
|
The UI sometimes flickers -- at first blanks out to black then re-draws,
|
|
this is most noticeable on white or gray backgrounds.
|
|
|
|
This appears to be GPU related.
|
|
|
|
package.json:
|
|
"chromium-args": "--disable-gpu-compositing",
|
|
|
|
This will fix the issue temporarily, but we still need a better solution.
|
|
|
|
|
|
|
|
Remote debugging via DevTools (nw/outdated)
|
|
-------------------------------------------
|
|
|
|
Set this in package.json:
|
|
"chromium-args": "--remote-debugging-port=9222",
|
|
|
|
Then open http://localhost:9222 in chrome.
|
|
|
|
|
|
|
|
Speedup loading of app (nw/outdated)
|
|
------------------------------------
|
|
|
|
One of the ways to speed up the load times when packed is to store Node's
|
|
modules ./node_modules in a separate location, outside of the app.zip
|
|
or package.nw
|
|
To enable require(..) to find them:
|
|
- > npm install --save app-module-path
|
|
- when building the zip move all the modules out to a new location
|
|
*except* app-module-path
|
|
- add this line to all root js modules *before* any other
|
|
require(..) is called:
|
|
if(process.__nwjs){
|
|
var path = require('path')
|
|
require('app-module-path')
|
|
.addPath(path.dirname(process.execPath)
|
|
+ '/node_modules/') }
|
|
|
|
|
|
|
|
|