how to do linting using nodemon?

2020-06-09 07:08发布

Can I use nodemon to lint my javascript? I am not using any build tool e.g. gulp or grunt and want to maximize the use of node and npm.

The output from nodemon can be piped. I want to use this for linting the changed file using eslint.

Here is my package.json

{
  "name": "app",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "nodemon server.js",
    "lint": "eslint"
  },
  "dependencies": {
    "MD5": "*",
    "clean-css": "*",
    "express": "~4.9.0",
    "express-handlebars": "~2.0.1",
    "express-redis-cache": "*",
    "foundation-sites": "~5.5.3",
    "fs-extra": "~0.8.1",
    "node-rest-client": "~1.5.1",
    "node-sass": "*",
    "path": "*"
  },
  "devDependencies": {
    "babel-eslint": "^4.1.6",
    "eslint": "^1.10.3",
    "eslint-config-airbnb": "^2.1.1",
    "eslint-config-airbnb-es5": "^1.0.8",
    "eslint-plugin-react": "^3.13.1",
    "nodemon": "~1.8.1",
    "parallelshell": "~2.0.0",
    "watch": "~0.17.1"
  }
}

I tried this. But it doesn't work.It gives error.

       "scripts": {
    "start": "nodemon({ script: 'server.js' }).on('restart', function () {console.log('nodemon started');}).on('crash', function () {console.log('script crashed for some reason');});",
    "lint": "eslint"
  },

3条回答
Lonely孤独者°
2楼-- · 2020-06-09 07:41

I use Standard.js for linting and I can get it to work with nodemon using the below package.json script.

"scripts": {
  "lint": "standard",
  "dev": "nodemon ./app --exec \"npm run lint && node\""
  "start": "nodemon ./app"
}

When I run npm run dev, any changes I make will be monitored and linted. I tested this in Windows using PowerShell.

查看更多
forever°为你锁心
3楼-- · 2020-06-09 07:45

Linting is purely a development process. Nodemon is a tool used for running server and not connected with build tools, but with running your application. Therefore answer is "NO". You should use proper tool for development automation like grunt, gulp etc. or just pure NPM scripts (in your package.json file).

I'd recommend using automation tools if your project is complicated, has many stages and a lot of bundling etc. However, for only linting, you could just prepare one-liner in your npm package.json, e.g. like this:

"scripts": {
    "lint": "eslint --fix src test",
}

And then run it with command: 'npm run lint'.

Remember that by using properly configured .eslintrc file, you could lint your code both by console commands, but by editors/IDEs as well (almost every broadly popular IDE has plugin for eslint).

More info about configuring eslint and creating proper eslintrc file could be found here: http://eslint.org/docs/user-guide/configuring

查看更多
SAY GOODBYE
4楼-- · 2020-06-09 07:54

You can use the exec option of nodemon to run your tests as you save code. Here's an example:

nodemon server.js --exec 'npm run test && node'

This will cause nodemon to run npm run test && node server.js, and it won't start the server until all the tests have run successfully.

查看更多
登录 后发表回答