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.git
cd ace-gui
git checkout master
git submodule init && git submodule update
(this sets up the DAISY Knowledge Base Git submodule)rm -rf node_modules
(this is really only needed ifyarn install
was already invoked)yarn cache clean
(this is an optional, but strongly-recommended step, as local packages are cached too)yarn install
git status && git --no-pager diff
(this should show NOyarn.lock
changes)yarn clean
yarn 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:prod
oryarn 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
ncu
is recommended to discover out of date NPM packages, and to subsequentlyyarn upgrade
orrm -rf node_modules && rm yarn.lock && yarn install
(which, in both cases, will updateyarn.lock
to match frozen versions of the latest available and approved dependencies). Use-x @types/node
to skip specific comma-separated packages.- npm-check is a useful alternative / complement to
ncu
. Use--ignore @types/node
to skip specific packages. Usenpm-check --skip-unused --no-emoji
for 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 outdated
also 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.app
spctl -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
master
branch:
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