# UXP LINTER
This project is useful for linting your code with ESLint rules and guidelines.

### Installation (local)
For installing ESLint locally in your project you need to run below commands:
<pre><code>npm i uxp-linter
uxp-linter --init</code></pre>

### Installation (Global)
For installing globally you need to run below commands:
<pre><code>npm i -g uxp-linter
uxp-linter --init</code></pre>

### NPX
You can run npx command as well as mentioned below:
<pre><code>npx uxp-linter</code></pre>

### Project Linting (On Command Line or terminal)
<pre><code>npm run uxp-linter-run</code></pre>

For linting the project one need to run above script which has been added inside scripts object
of your projects package.json file.  
User can edit the script as per requirements.
<pre><code>"uxp-linter-run:report": "eslint --ext ts,tsx ./"</code></pre>

### Project Linting (Generating Report - By Default HTML Format)
<pre><code>npm run uxp-linter-run:report</code></pre>

For generating report one need to run the above script which has been added inside scripts object
of your projects package.json.  
User can change the format by replacing `--format html` option by mentioned values `[checkstyle,codeframe,compact,html,jslint-xml,json-with-metadata,json,junit,stylish,table,tap,unix,visualstudio]` in the script.

<pre><code>"uxp-linter-run:report": "eslint --ext ts,tsx ./ --format html > ./src/uxp-linting-report.html"</code></pre>

### Fixing linting errors
<pre><code>npm run uxp-linter-fix</code></pre>

For fixing linting errors one just need to run above command.  We have added a script inside scripts tag in your projects package.json
<pre><code>"uxp-linter-fix": "eslint --ext ts,tsx . --fix"</code></pre>

### Removing package

<pre><code>npx uxp-linter remove</code></pre>

### Description
After basic package installation user will be prompted if s/he is using Typescript.  
For input as `y` or `Y`, an npm package named `eslint-config-uxp-ts-linter` will be installed.  
For input as `n` or `N`, an npm package named `eslint-config-uxp-es-linter` will be installed.  
Pressing any other key will abort the process and user will have to run the command again.  
Changes will be done in various files namely:
1) package.json: This package will install dependency related to linting for Typescript.
    It will also include few scripts in "scripts" object of package.json   
2) A file called `.eslintrc.js` will be generated which will be extending the linting package, also user can write his/er specific rules in this file under the `rules` object. User rules will be given preference over the installed package.
3) A backup file will be generated for package.json and any file including name like `.eslintrc` so that if the user wants to use his/er earlier package s/he can directly use the code from the backup file.

### Note

ESLint version required >=6.x.x
