如何使用 nodemon 进行 linting?

Posted

技术标签:

【中文标题】如何使用 nodemon 进行 linting?【英文标题】:how to do linting using nodemon? 【发布时间】:2016-04-07 21:45:44 【问题描述】:

我可以使用 nodemon 来检查我的 javascript 吗?我没有使用任何构建工具,例如gulp 或 grunt 并希望最大限度地利用 node 和 npm。

The output from nodemon can be piped。我想用它来使用 eslint 对更改的文件进行 linting。

这是我的 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"
  

我试过这个。但它不起作用。它给出了错误。

       "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"
  ,

【问题讨论】:

您是否有任何特殊原因要在运行时使用进程管理器而不是直接通过文本编辑器执行 linting? 【参考方案1】:

我使用 Standard.js 进行 linting,我可以使用下面的 package.json 脚本让它与 nodemon 一起工作。

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

当我运行npm run dev 时,我所做的任何更改都会受到监控和检查。我在Windows 中使用PowerShell 对此进行了测试。

【讨论】:

【参考方案2】:

Linting 纯粹是一个开发过程。 Nodemon 是一个用于运行服务器的工具,它不与构建工具连接,而是用于运行您的应用程序。因此答案是“否”。您应该使用适当的工具进行开发自动化,例如 grunt、gulp 等,或者只使用纯 NPM 脚本(在您的 package.json 文件中)。

如果您的项目很复杂,有很多阶段和大量捆绑等,我建议您使用自动化工具。但是,仅对于 linting,您可以只在 npm package.json 中准备一个衬里,例如像这样:

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

然后使用命令运行它:'npm run lint'。

请记住,通过使用正确配置的 .eslintrc 文件,您可以通过控制台命令对代码进行 lint,也可以通过编辑器/IDE(几乎每个广受欢迎的 IDE 都有 eslint 插件)。

更多关于配置 eslint 和创建正确的 eslintrc 文件的信息可以在这里找到: http://eslint.org/docs/user-guide/configuring

【讨论】:

我在开发中使用 nodemon 来监视我的 javascript 文件。我不会在生产中使用它,它已在开发依赖项中列出。我想这是对 nodemon 的正确使用,因为它监视我的应用程序中的所有 javascript 文件,我觉得必须有一种方法来使用它来监视我是否编写了正确的代码。这就是为什么我想扩展它以进行 linting。 我改进了我的答案,使其更合适:) nodemon 的主要用途是在开发过程中更改文件时运行/重新启动服务器,而不是用于构建。如果您只想将 eslinter 的输出添加到控制台(在我看来有点不切实际),您可以在 nodemon 配置文件中使用 events restart config 标志并在那里添加 eslint。 您通常还使用诸如 grunt 或 gulp watch 之类的东西来执行您使用 nodemon 执行的操作。此外,您还可以自动处理文件以压缩它们、下载所需的资产、整理文件等。 我没有使用 nodemon 来构建我的文件。正如您所说的“主要 nodemon 使用是在开发过程中更改文件时运行/重新启动服务器,而不是用于构建”,我只想在检查更改时将其扩展到 linting。这要求太多了吗?? 您在我之前的评论中有答案 - 只需使用 nodemon 中的 events restart 标志并在那里添加控制台 linting exec。 ESLint 有 CLI:eslint.org/docs/user-guide/command-line-interface.html 请不要以任何方式对我的 cmets 和解决方案感到冒犯,我只是想引导您进入良好的编码实践并推荐最佳解决方案;)【参考方案3】:

您可以使用nodemonexec 选项在保存代码时运行测试。这是一个例子:

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

这将导致 nodemon 运行npm run test && node server.js,并且在所有测试成功运行之前它不会启动服务器。

【讨论】:

为什么不接受这个答案超出了我的理解。这正是您正在寻找 OP 的答案。

以上是关于如何使用 nodemon 进行 linting?的主要内容,如果未能解决你的问题,请参考以下文章

VS Code 在文件保存时自动重启调试器,如 nodemon

如何在 nodeJs 中使用 nodemon 调试应用程序

如何使用 tslint 对整个文件夹进行 lint

如何使用 Husky 版本 6 进行 lint-staged 工作

如何使 nodemon 与 WSL 2 一起工作?

如何为 lint 和运行测试的拉取请求编写管道