Setting up your local development environment
Gitlab
The required code can be downloaded from our gitlab repositories:
To download (clone) the code from gitlab please use:
git clone https://gitlab.com/hybrix-public/node.git
Enter the newly created folder
cd node
To setup and install development dependencies run:
./scripts/npm/setup.sh
Folder structure
The development environment expects all repositories to be cloned into a common base folder, you can choose any name. Here we will use $HYBRIXD as a placeholder ($ are shell variable prefixes)
Required
$HYBRIXD/node: contains the hybrixd deamon (required for all development) gitlab.com/hybrix-public/hybrixd$HYBRIXD/common: files that are used by several of the above projects (required) gitlab.com/hybrix-public/common$HYBRIXD/node_modules: the node_modules (required) gitlab.com/hybrix-public/node_modules$HYBRIXD/hybrix-jslib: contains what is needed to compile the hybrix javascript interface client libraries (required) gitlab.com/hybrix-public/hybrix-jslib
Optional
$HYBRIXD/web-wallet: contains everything required to compile the web-wallet module (required for front-end development)$HYBRIXD/deterministic: contains everything required to compile deterministic client modules (required for determistic development) gitlab.com/hybrix-public/deterministic$HYBRIXD/node: NodeJS run times for various architectures (independent setup) gitlab.com/hybrix-public/nodejs
Per project
$HYBRIXD/$PROJECT/node_binaries: A symbolic link to$HYBRIXD/nodejs/$SYSTEMwhere$SYSTEMdepends on your system architecture (Linux, Mac, 32 or 64 bit)$HYBRIXD/$PROJECT/node_modules: The node modules needed for this project$HYBRIXD/$PROJECT/common: A symbolic link to$HYBRIXD/common$HYBRIXD/$PROJECT/scripts: Tools and scripts$HYBRIXD/$PROJECT/scripts/main: main and/or npm command scripts$HYBRIXD/$PROJECT/docs: Documentation$HYBRIXD/$PROJECT/dist: The compiled distributable files if applicable$HYBRIXD/$PROJECT/package.json: The npm package file.
Scripts and common commands
For hybrix npm (Node Package Manager) is used to manage the node packages per project (located in the $HYBRIXD/$PROJECT/node_modules directories).
The configuration for each project is stored in $HYBRIXD/$PROJECT/package.json .
Important! When working with node packages please do not use global npm but the one located in $HYBRIXD/$PROJECT/scripts/main/npm.sh . This ensures version compatibility.
The following commands can be used from the $HYBRIXD/$PROJECT project folders:
./scripts/main/setup.sh: Run all tasks to setup the dev environment for this project. For example link dependencies and implement git hooks../scripts/main/compile.sh: Run all tasks to compile the project into the$HYBRIXD/$PROJECT/distdistributables folder../scripts/main/dist.sh: Distribute the compiled files to the Node../scripts/main/clean.sh: Clean the$HYBRIXD/$PROJECT/distdistributables folder../scripts/main/build.sh: Run the setup, compile and dist commands sequentially../scripts/docs/docs.sh: Compile documentation../scripts/main/diag.sh: Run a diagnostic on all project folders to check linkage and git status.
Troubleshooting
- Run
./scripts/main/diag.shto validate all components and linkage. - Run
./scripts/main/setup.shto correct project symbolic link problems.
node
The following extra commands can be used from the$HYBRIXD/nodeproject folder:
./hybrixd: Start hybrix./qrtz yourFile.qrtz: Run your your own Qrtz script (see example.qrtz)
web-wallet
The following extra commands can be used from the $HYBRIXD/web-wallet project folder:
./scripts/main/compile.sh en: Compile the web-wallet and translate to English.
Results are located in thedistdirectory and available via symbolic link at$HYBRIXD/node/modules/web-wallet