-
Windows Cloning
- The
public
directory includes symlinks, which most versions of Windows Git will not correctly clone by default. Make sure to clone using the following command:git clone -c core.symlinks=true https://github.com/cytoscape/cytoscape-explore.git
- The
-
Prerequisites:
- Node.js
- Option 1: Install nvm so you can have multiple versions of node installed.
- Install version 12 with
nvm install 12
. - Set version 12 as your default:
nvm alias default 12
. - To use a particular version, do
nvm use 12.0.1
or set up a.nvmrc
file in the CWD and donvm use
.
- Install version 12 with
- Option 2: Install node manually:
- Mac:
brew install node@12
- Linux: Use
dnf
,zypper
,apt
, etc. - Or use the installer for Mac or Windows
- Mac:
- Option 1: Install nvm so you can have multiple versions of node installed.
- CouchDB
- Mac:
brew install couchdb && brew services start couchdb
- Linux: Use
dnf
,zypper
,apt
, etc. - Or use the installer
- Mac:
- Node.js
-
Start off by running
npm install
. -
The main target you will run during development is
npm run watch
.- This automatically builds the clientside code in the background. The browser will refresh automatically when the code is rebuilt.
- The server will automatically reload when you change the server code. That way new HTTP requests from the client will use the updated code right away.
-
If you have CouchDB running locally on the default port, you don't need to configure any environment variables to get things working. The defaults are preset for local development.
-
The Chrome debugger can be used for the clientside code (Chrome > View > Developer > Developer Tools) or the serverside code (
npm run inspect
and go to chrome://inspect). There is also an included launch config file that allows you to debug the client or the server directly in VSC.
- Visual Studio Code
- Extensions
- Must-haves
- ESLint : Lint JS.
- Stylelint : Lint CSS.
- Debugger for Chrome : Use the VSC debugger on an instnace of Chrome, for debugging the browser UI.
- Nice-to-haves
- GitHub Pull Requests and Issues : Easily browse and reference issues and pull requests.
- Live Share Extension Pack : Do remote pair programming.
- Docker : Manage docker images with a GUI.
- Must-haves
The following environment variables can be used to configure the server:
NODE_ENV
: the environment mode, eitherproduction
ordevelopment
(default)PORT
: the port on which the server runs (default 3000)LOG_LEVEL
: the log level forout.log
COUCHDB_URL
: the URL of the CouchDB instance that the server should permanently store its dataUSE_COUCH_AUTH
: set totrue
if you want to use CouchDB auth viaCOUCHDB_USER
&COUCHDB_PASSWORD
COUCHDB_USER
: admin user nameCOUCHDB_PASSWORD
: admin user passwordLOG_SYNC
: log CouchDB operations when set totrue
LOG_VIZMAPPER
: log VizMapper operations when set totrue
BASE_URL
: the base url of the server (e.g.https://example.com
)UPLOAD_LIMIT
: max network upload size (e.g.20kb
)NDEX_API_URL
: the URL for the NDEx web application
npm start
: start the server (usually for prod mode)npm run watch
: watch mode (debug mode enabled, autorebuild, autoreload)npm run inspect
: start the server in inspection mode, with server-side code debuggable via the chrome debugger with a breakpoint automatically set on the first line (chrome://inspect)npm run build
: build projectnpm run build-prod
: build the project for productionnpm run bundle-profile
: visualise the bundle dependenciesnpm run clean
: clean the projectnpm run lint
: lint the projectnpm run fix
: fix linting errors that can be automatically addressednpm run test:mocha
: run model testsnpm test
: run model tests, linting, and a build (run this before doing a pull request)
Build the container. Here, cytoscape-explore
is used as the container name.
cd cytoscape-explore
docker build -t cytoscape-explore .
Run the container:
docker run -it -p 12345:3000 -e "NODE_ENV=production" --name "my-cytoscape-explore" cytoscape-explore
Notes:
- The
-it
switches are necessary to makenode
respond toctrl+c
etc. indocker
. - The
-p
switch indicates that port 3000 on the container is mapped to port 12345 on the host. Without this switch, the server is inaccessible. - The
-u
switch is used so that a non-root user is used inside the container. - The
-e
switch is used to set environment variables. Alternatively use--env-file
to use a file with the environment variables. - References:
All files /test
will be run by Mocha. You can npm run test:mocha
to run all tests, or you can run npm run test:mocha -- -g specific-test-name
to run specific tests.
Chai is included to make the tests easier to read and write.
By running npm test
, you will run the tests, the linting, and a test build.
- Make sure the tests are passing:
npm test
- Make sure the linting is passing:
npm run lint
- Bump the version number with
npm version
, in accordance with semver. Theversion
command innpm
updates bothpackage.json
and git tags, but note that it uses av
prefix on the tags (e.g.v1.2.3
). - For a bug fix / patch release, run
npm version patch
. - For a new feature release, run
npm version minor
. - For a breaking API change, run
npm version major.
- For a specific version number (e.g. 1.2.3), run
npm version 1.2.3
. - Push the release:
git push origin --tags