Developer Workflow - daisy/ace-gui GitHub Wiki
Dependencies
The source code for the latest ace-gui release is tagged as v1.1.3.
Technologies
Prerequisites
- NodeJS and NPM
- Yarn ("classic" version
1.x)
Build, Run, Package
cd MY_ACE_FOLDER(choose your folder name / filesystem location)git clone https://github.com/daisy/ace-gui.gitcd ace-guigit checkout mastergit submodule init && git submodule update(this sets up the DAISY Knowledge Base Git submodule)rm -rf node_modules(this is really only needed ifyarn installwas already invoked)yarn cache clean(this is an optional, but strongly-recommended step, as local packages are cached too)yarn installgit status && git --no-pager diff(this should show NOyarn.lockchanges)yarn cleanyarn start:dev(launches the app after compiling in development mode, with a file watcher)yarn start:dev_(launches the app after compiling in development mode, no file watcher)yarn start:prod(launches the app after compiling in production mode, no file watcher)yarn start(launches the app without compilation, so requires prior manual invokation ofyarn build:prodoryarn build:dev)yarn package:linux(creates the Linux distributable Debian package and AppImage)yarn package:win(creates the Windows NSIS installer, currently unsigned)yarn package:mac(creates the MacOS DMG installer, requires the DAISY EV Code Signing Certificate and invokes the Apple Notarization process)yarn package:mac:skip-notarization(skips Apple's Notarization)yarn package:mac:dev(skips Apple's Notarization, development build with React + Redux web inspectors etc.)yarn package:linux:dev(development build with React + Redux web inspectors etc.)yarn package:win:dev(development build with React + Redux web inspectors etc.)yarn package:mac:dev(development build with React + Redux web inspectors etc.)
Dependency Maintenance
ncuis recommended to discover out of date NPM packages, and to subsequentlyyarn upgradeorrm -rf node_modules && rm yarn.lock && yarn install(which, in both cases, will updateyarn.lockto match frozen versions of the latest available and approved dependencies). Use-x @types/nodeto skip specific comma-separated packages.- npm-check is a useful alternative / complement to
ncu. Use--ignore @types/nodeto skip specific packages. Usenpm-check --skip-unused --no-emojifor cleaner shell output. - david is a useful alternative / complement to
ncu. The online service can be helpful too: https://david-dm.org/daisy/ace?type=dev yarn outdated/npm outdatedalso helps :)
Localization (Translations)
Please visit this dedicated wiki page to learn more about how language resources are created and maintained.
Code signing and Notarization
- After
yarn package:mac: codesign --test-requirement="=notarized" --verify --verbose dist/mac/Ace\ by\ DAISY.appspctl -a -vv dist/mac/Ace\ by\ DAISY.app
Release Tagging
- A useful command to ensure the date/time of the Git tag is the same as the last Git commit in the
masterbranch:
GIT_COMMITTER_DATE="$(git show master --format=%aD | head -1)" \
git tag -a "v1.0.0" master -m "tag v1.0.0" \
&& git push --tags origin master \
&& git tag --list --format='%(refname) %(taggerdate)'
- Quick reminder of how to delete an erroneous tag (local and remote removal):
git tag -d v1.0.0 && git push origin :refs/tags/v1.0.0