hint
Version:
The linting tool for the web
158 lines (120 loc) • 4.33 kB
Markdown
<!-- markdownlint-disable MD024 -->
# Using CircleCI and webhint
[CircleCI][] is a CI/CD service you can use to run webhint
to test your website.
## Source code analysis
You can integrate `webhint` by adding it to the `package.json` of a Node
project as shown in the "For Node projects" section below. If you are not
using Node or don't want to modify your project's `package.json`, you can
use the instructions in the "For other project types" section.
### For Node projects
In your project, run:
```bash
npm install hint --save--dev
```
In the file `package.json` add a new script `test-hint`:
```json5
...
"scripts": {
...
"test-hint": "hint ./" // ./ or the path where the files to test are.
}
...
```
Add the file `.circleci/config.yml` to your project:
```yml
version: 2.1
jobs:
build:
docker:
- image: circleci/node:lts
steps:
- checkout # check out the code in the project directory
- run: npm install
- run: npm run test-hint
```
**Note:** By default, `hint` will use
`configuration-development` if a `.hintrc` file is not present.
### For other project types
If your project is not a Node project or you don't want to
modify your `package.json` file, you can add a `.circleci/config.yml` to your project:
```yml
version: 2.1
jobs:
build:
docker:
- image: circleci/python:latest-node
steps:
- checkout # check out the code in the project directory
- run: npm install hint --no-save
- run: node node_modules/hint/dist/src/bin/hint.js ./ # ./ or the path where the files to test are.
```
In this case, we need `nodejs` to be included in the Docker image. For the pre-built
CircleCI images, you just need to add `-node` to the image tag. If you are
using your own image, you need to update it to include `nodejs`. Once we have
Node in the image, we can install `hint` manually and run the scan.
As in the previous example, the default configuration will be `configuration-development`.
## Live site analysis
### For Node projects
In your project, run:
```bash
npm install hint --save--dev
```
In the file `package.json` add a new script `test-hint`:
```json5
...
"scripts": {
...
"test-hint": "hint https://url-to-your-project" // ideally, this url will be to your staging/preproduction environment.
}
...
```
Add the file `.circleci/config.yml` to your project:
```yml
version: 2.1
jobs:
build:
docker:
- image: circleci/node:lts-browsers
steps:
- checkout # check out the code in the project directory
# Add the necessary steps to deploy your website.
- run: npm install
- run: npm run test
```
**Note:** By default, `hint` will use
`configuration-web-recommended` if a `.hintrc` file is not present.
**Note:** By default, `configuration-web-recommended` uses the
`puppeteer` connector, which requires a Chromium browser to work. If you are using
a pre-built CircleCI image, you just need to add `-browsers` to the tag
to have browsers installed. If you are using your own custom image, you need
to install a Chromium browser in your image first.
### For other project types
If your project is not a Node project or you don't want to
modify your `package.json`, you can
add `.circleci/config.yml` to your project:
```yml
version: 2.1
jobs:
build:
docker:
- image: circleci/python:latest-node-browsers
steps:
- checkout # check out the code in the project directory
# Add the necessary steps to deploy your website.
- run: npm install hint --no-save
- run: node node_modules/hint/dist/src/bin/hint.js https://url-to-your-project
```
The default configuration will be `configuration-web-recommended`.
In this case, we need `nodejs` and browsers to be included in the Docker image.
For the pre-built CircleCI images, you need to add `-node-browsers` to the
image tag. If you are using a custom image, you will need to install `nodejs`
and a Chromium browser in your image.
## Common
## Further configuration
In order to change the output, severity of the hints, etc. you will have to
use your own `.hintrc` file. Please check the [configuring webhint] section
for more details.
<!-- Link labels -->
[CircleCI]: https://circleci.com/
[configuring webhint]: https://webhint.io/docs/user-guide/configuring-webhint/summary/