ImageGrid/Viewer/doc/BUILD-NOTES
Alex A. Naanou 98bc9ecc24 docs...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2020-12-23 00:12:32 +03:00

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/') }