我们正在将 Turborepo 添加到我们现有的项目中,因为我们想再添加一个应用程序。现在我们遇到了 ESLint 和 Prettier 的问题。在我们的管道 (GitHub Actions) 中,检查失败并显示以下消息:
TypeError: prettier.resolveConfig.sync is not a function
Occurred while linting /home/runner/work/our_turborepo_root/apps/our_app_1/.eslintrc.js:1
Rule: "prettier/prettier"
at Program (/home/runner/work/our_turborepo_root/our_app_1/node_modules/eslint-plugin-prettier/eslint-plugin-prettier.js:138:40)
以下是一些相关文件:
/package.json
...
"scripts": {
"lint": "turbo run lint",
"lint:tsc": "turbo run lint:tsc",
"eslint:ci": "turbo run eslint:ci --filter='./apps/*' --",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
...
},
"devDependencies": {
"prettier": "3.0.3"
},
...
/apps/ourApp1/package.json
...
"scripts": {
"eslint:ci": "npm run lint:ts",
"lint": "npm-run-all lint:*",
"lint:ts": "eslint . --ext .jsx,.js,.ts,.tsx --max-warnings 1",
"lint:tsc": "tsc --project ./tsconfig.json --noEmit && tsc --project ./tsconfig.server.json --noEmit",
"prettier": "run-p prettier:*",
"prettier:json": "prettier --write \"**/*.*(json)\"",
"prettier:scripts": "prettier --write \"**/*.*(js|jsx|ts|tsx)\"",
"prettier:styles": "prettier --write \"**/*.*(css|scss)\"",
},
"devDependencies": {
"eslint-plugin-prettier": "5.0.0",
"eslint-config-shared": "*"
},
"overrides": {
"eslint-config-shared": {
"eslint-plugin-prettier": "5.0.0"
}
}
...
/apps/ourApp1/.eslintrc.js
module.exports = {
root: true,
extends: ['eslint-config-shared'],
};
/packages/eslint-config-shared/index.js
module.exports = {
extends: [
'plugin:@next/next/recommended',
],
rules: {
'@typescript-eslint/explicit-module-boundary-types': 'warn',
'@typescript-eslint/ban-types': 'off',
'import/named': 'off',
'jest/expect-expect': [
'error',
{
assertFunctionNames: [
'expect',
'expectValidationError',
'expectNoValidationError',
],
},
],
},
overrides: [
{
files: ['*.js'],
rules: {
'require-await': 'off',
'@typescript-eslint/no-var-requires': 'off',
},
},
{
files: ['e2e/**/*.ts'],
rules: {
'jest/no-done-callback': 'off',
},
},
],
};
但是,当我在本地运行
turbo run lint
时,它成功结束。可能是什么问题?
尝试:
module.exports = {
root: true,
extends: ['shared'],
};