If you would like to contribute an improvement or a fix please pay attention to these items:
To start development and improvement of the source code you should have the following things:
- git
- node.js (we recommend the latest LTS version)
- npm (the minimal supported version is 3.0.0)
- Google Chrome browser (it's necessary to run unit tests locally)
Firstly, you should clone a copy of the repository by using one of the following commands:
- HTTPS:
git clone https://github.com/Microsoft/powerbi-visuals-utils-chartutils.git
- SSH:
git clone [email protected]:Microsoft/powerbi-visuals-utils-chartutils.git
After that, you should change the current working directory to powerbi-visuals-utils-chartutils
by using the following command:
cd powerbi-visuals-utils-chartutils
After that, you should install dependencies by using the following command:
npm install
The final step is installation of necessary type declarations by using the following command:
npm run typings:install
The repository is ready for development now.
We use Less and TypeScript for the repository. To build source code you should run the following command:
npm run build
This command compiles less code to CSS and TypeScript code to JavaScript. The result of the compilation is available in the lib
directory.
We use eslint as a linter for TypeScript code. To check source code you should run the following command:
npm run lint
This command checks style of TypeScript code and provides a list of problems. Please address all of problems reported by eslint before sending a pull request to the repository.
We use Jasmine and Karma to run unit tests. Please note, Karma requires Google Chrome to run unit tests. To run unit tests locally on your machine you should run the following command:
npm run test
To debug unit tests in Google Chrome browser you should run the following command:
npm run test -- --single-run=false
This command runs unit tests in the browser and watches tests files, in other words, you have an ability to run unit tests automatically after any changing.