首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与lint-staged一起使用时,预提交规则失败

与lint-staged一起使用时,预提交规则失败
EN

Stack Overflow用户
提问于 2019-06-13 18:20:31
回答 1查看 3.7K关注 0票数 1

我正在尝试为angular5项目设置预提交git挂钩。我用的是哈士奇的布料。Prettier和stylelint可以很好地运行。但是当lint-staged遇到'ng lint‘时,它只是抛出错误:

代码语言:javascript
复制
    Project '/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/src/app/components/dashboard/dashboard.component.ts' could not befound in workspace.
    Error: Project '/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/src/app/components/dashboard/dashboard.component.ts' couldnot be found in workspace.
      at Workspace.getProject (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular-devkit/core/src/workspace/workspace.js:83:19)
      at Architect.getBuilderConfiguration (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular-devkit/architect/src/architect.js:96:41)
      at MergeMapSubscriber._loadWorkspaceAndArchitect.pipe.operators_1.concatMap [as project] (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/models/architect-command.js:64:55)
      at MergeMapSubscriber._tryNext (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/node_modules/rxjs/internal/operators/mergeMap.js:69:27)
      at MergeMapSubscriber._next (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/node_modules/rxjs/internal/operators/mergeMap.js:59:18)
      at MergeMapSubscriber.Subscriber.next (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/node_modules/rxjs/internal/Subscriber.js:67:18)
      at TapSubscriber._next (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/node_modules/rxjs/internal/operators/tap.js:65:26)
      at TapSubscriber.Subscriber.next (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/node_modules/rxjs/internal/Subscriber.js:67:18)
      at MergeMapSubscriber.notifyNext (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/node_modules/rxjs/internal/operators/mergeMap.js:92:26)
      at InnerSubscriber._next (/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/node_modules/@angular/cli/node_modules/rxjs/internal/InnerSubscriber.js:28:21)
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! avi-portal-ui@0.0.0 lint: `ng lint "/Users/sneha.vantamuri/Documents/customerportal/aviportal-ui/src/app/components/dashboard/dashboard.component.ts"`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the avi-portal-ui@0.0.0 lint script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

下面是我在package.json中的husky和lint-staged配置

代码语言:javascript
复制
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,scss,json}": [
      "npm run prettier:check",
      "npm run stylelint",
      "npm run lint",
      "git add"
    ]
  }

另外:

代码语言:javascript
复制
"scripts":{
"lint": "ng lint",
 "prettier:check": "prettier --config ./.prettierrc --check './src/**/*.{ts,scss,json}'",
 "stylelint": "stylelint \"src/**/*.scss\"",
}

"npm run prettier:check","npm run stylelint",这两个命令运行正常,但npm run lint有错误

EN

回答 1

Stack Overflow用户

发布于 2019-06-14 00:33:17

在花了几个小时之后,我发现projectName没有被正确通过。这就是Workspace.getProject()给出异常的原因。我还知道,angular-cli > 5需要使用ng lint命令显式指定projectname,才能使其与lint-staged一起工作。

为面临同样问题的人分享解决方案:

因此,以下是解决方案:

代码语言:javascript
复制
    "*.{ts,scss,json}": [
      "npm run prettier:check",
      "npm run stylelint",
      "npm run lint **<yourProjectNamefromAngular.jsonfile> --files**",
      "git add"
    ]
  }

参考:https://github.com/okonet/lint-staged/pull/534/files

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56578380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档