This is an optional way to develop on crowbar-ui
within a contained environment. The main benefit is to have some reusable and host-independent environment to develop on.
-
make sure
docker
is installed and thedocker
daemon is running.for installation details see: https://docs.docker.com/engine/installation/
-
build the image from the Dockerfile:
docker build -t crowbar-ui .
- run the container (
pwd
should be your git clone):
docker run -d --name "crowbar-ui_container" -v $(pwd)/assets:/crowbar-ui/assets -v $(pwd)/routes:/crowbar-ui/routes -p 3000:3000 crowbar-ui
- work on the assets folder in your local git clone and the changes will be immediately visible in the browser.
also if you are changing the
./routes
directory the server inside the container gets restarted bynodemon
docker exec -ti crowbar-ui_container npm test
1 - Clone the app from GitHub:
[email protected]:crowbar/crowbar-ui.git
2 - Locate yourself into the recently created folder:
cd crowbar-ui
Make sure you have Node.js installed in your machine with NPM, if not, please proceed to install it before continuing with the following steps. (more info: https://nodejs.org/en/download/)
3 - Let npm install all the needed packages:
npm install
4 - Some packages, like gulp, needs to be installed globally to be available through the console. Let's install them:
sudo npm install -g gulp
5 - You will need to have Bower installed globally in your machine:
npm install -g bower
6 - Let bower fetch all our dependencies:
NODE_ENV=production npm run preinstall
7 - Let Gulp build the public folder for your assets (it will keep watching for changes, so yes, after this, you are ready to start making changes in the front-end):
NODE_ENV=production npm run postinstall
8 - Update the tested_step
variable in routes/api/upgrade.js
depending on the scenario you want to test. This is used to properly fill the mocked status API response.
9 - Run the server at http://localhost:3000 with (you will need to restart it every time you make changes in the backend, but not in the layout or front-end in general):
NODE_ENV=production npm start
1 - Everytime you update master from new PR merged into it, make sure you have all the latest libraries from package.json by running
npm install
2 - and then, in a new terminal:
npm run preinstall && npm run postinstall
to compile all your assets again and leave it watching your changes.
:)