首页 > 解决方案 > 使用更漂亮的 onchange 自动格式化代码不起作用

问题描述

每当文件更改时,我想用更漂亮的格式格式化文件。所以我运行这个命令来实现

onchange '**/*.js' -- prettier --write {{changed}}

当通过终端运行时,这绝对可以正常工作,监听文件更改并对其进行格式化。

但是当我将此命令添加为 package.json 中的 npm 脚本并执行它时npm run prettier-watch

它开始监听更改,但在文件更改时不会格式化代码。

包.json

{
  "name": "pwa-svelte-rollup-template",
  "private": true,
  "scripts": {
    "start": "run-p serve autobuild",
    "serve": "sirv public --dev",
    "build": "rollup -c",
    "autobuild": "rollup -c -w",
    "clean": "rimraf public/bundle.*",
    "prettier-watch": "onchange '**/*.js' -- prettier --write {{changed}}"
  },
  "devDependencies": {
    "@babel/core": "^7.5.5",
    "@babel/plugin-proposal-class-properties": "^7.5.5",
    "@babel/preset-env": "^7.5.5",
    "babel-core": "^7.0.0-bridge.0",
    "babel-eslint": "^10.0.2",
    "babel-jest": "^24.8.0",
    "eslint": "^6.1.0",
    "eslint-config-standard": "^13.0.1",
    "eslint-plugin-import": "^2.18.2",
    "eslint-plugin-jest": "^22.14.0",
    "eslint-plugin-node": "^9.1.0",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-standard": "^4.0.0",
    "node-sass": "^4.12.0",
    "npm-run-all": "^4.1.5",
    "onchange": "^6.0.0",
    "prettier": "^1.18.2",
    "rimraf": "^2.6.3",
    "rollup": "^1.17.0",
    "rollup-plugin-babel": "^4.3.3",
    "rollup-plugin-commonjs": "^10.0.1",
    "rollup-plugin-livereload": "^1.0.1",
    "rollup-plugin-node-resolve": "^5.2.0",
    "rollup-plugin-svelte": "^5.1.0",
    "rollup-plugin-terser": "^5.1.1",
    "sirv-cli": "^0.4.4",
    "svelte": "^3.6.9",
    "svelte-preprocess-sass": "^0.2.0"
  },
  "babel": {
    "presets": [
      [
        "@babel/preset-env",
        {
          "useBuiltIns": "entry",
          "corejs": "3.0.0"
        }
      ]
    ],
    "plugins": [
      [
        "@babel/plugin-proposal-class-properties"
      ]
    ],
    "sourceMaps": true
  },
  "browserslist": [
    "last 2 versions",
    "not dead",
    "not IE 11",
    "not < 0.2%"
  ],
  "eslintConfig": {
    "extends": [
      "standard"
    ],
    "env": {
      "browser": true,
      "serviceworker": true,
      "jest": true
    },
    "parser": "babel-eslint",
    "parserOptions": {
      "ecmaVersion": 8,
      "ecmaFeatures": {
        "experimentalObjectRestSpread": true
      },
      "sourceType": "module"
    }
  },
  "eslintIgnore": [
    ".cache",
    "dist",
    "node_modules"
  ]
}

如果我做错了什么,请告诉我

标签: node.jsnpmnode-modules

解决方案


我有同样的问题。将您的 prettier-watch 脚本更改为此"onchange \"**/*.js\" -- prettier --write {{changed}}"


推荐阅读