```=json
// .eslintrc.json
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nx"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"extends": ["eslint:recommended"],
"rules": {
"@nx/enforce-module-boundaries": [
"error",
{
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
{
"sourceTag": "*",
"onlyDependOnLibsWithTags": ["*"]
}
]
}
],
"semi": "error",
"eqeqeq": ["error", "smart"]
}
},
{
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nx/typescript", "plugin:@typescript-eslint/recommended", "standard-with-typescript"],
"rules": {
"react/jsx-no-useless-fragment": "off",
"@typescript-eslint/no-throw-literal": "off",
"@typescript-eslint/consistent-type-definitions": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/strict-boolean-expressions": "off",
"@typescript-eslint/no-dynamic-delete": "off",
"@typescript-eslint/naming-convention": "off",
"@typescript-eslint/non-nullable-type-assertion-style": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/restrict-template-expressions": "off",
"@typescript-eslint/no-confusing-void-expression": "off",
"@typescript-eslint/triple-slash-reference": "off",
"@typescript-eslint/no-misused-promises": "off",
"@typescript-eslint/no-floating-promises": "off",
"@typescript-eslint/prefer-nullish-coalescing": "off",
"@typescript-eslint/promise-function-async": "off",
"@typescript-eslint/no-empty-function": "warn",
"@typescript-eslint/no-unused-vars": [
"warn",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_",
"caughtErrorsIgnorePattern": "^_"
}
],
"@typescript-eslint/semi": "error",
"@typescript-eslint/type-annotation-spacing": "error",
"@typescript-eslint/space-before-function-paren": "error",
"@typescript-eslint/space-infix-ops": "error",
"@typescript-eslint/no-use-before-define": "error",
"@typescript-eslint/array-type": [
"error",
{
"default": "array"
}
],
"@typescript-eslint/member-delimiter-style": [
"error",
{
"multiline": {
"delimiter": "comma",
"requireLast": true
},
"singleline": {
"delimiter": "comma",
"requireLast": false
},
"multilineDetection": "brackets"
}
],
"@typescript-eslint/indent": [
"error",
2,
{
"SwitchCase": 1,
"VariableDeclarator": 1,
"outerIIFEBody": 1,
"MemberExpression": 1,
"FunctionDeclaration": { "parameters": 1, "body": 1 },
"FunctionExpression": { "parameters": 1, "body": 1 },
"CallExpression": { "arguments": 1 },
"ArrayExpression": 1,
"ObjectExpression": 1,
"ImportDeclaration": 1,
"flatTernaryExpressions": false,
"ignoreComments": false,
"ignoredNodes": [
"TemplateLiteral *",
"JSXElement",
"JSXElement > *",
"JSXAttribute",
"JSXIdentifier",
"JSXNamespacedName",
"JSXMemberExpression",
"JSXSpreadAttribute",
"JSXExpressionContainer",
"JSXOpeningElement",
"JSXClosingElement",
"JSXFragment",
"JSXOpeningFragment",
"JSXClosingFragment",
"JSXText",
"JSXEmptyExpression",
"JSXSpreadChild"
],
"offsetTernaryExpressions": true
}
]
}
},
{
"files": ["*.tsx"],
"rules": {
"react/self-closing-comp": "warn",
"react/jsx-closing-bracket-location": ["warn", "tag-aligned"],
"react/jsx-indent": ["warn", 2, {
"checkAttributes": true,
"indentLogicalExpressions": true
}],
"react/prop-types": "off",
"react/jsx-indent-props": ["warn", 2],
"react/jsx-no-useless-fragment": "off"
}
},
{
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nx/javascript", "standard"],
"rules": {}
},
{
"files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
"env": {
"jest": true
},
"rules": {}
}
]
}
```
```
{
"npm.packageManager": "pnpm",
"i18n-ally.localesPaths": ["apps/**/**/i18n/translations"],
"i18n-ally.keystyle": "nested",
"i18n-ally.sourceLanguage": "zh-TW",
"i18n-ally.enabledParsers": ["json"],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"i18n-ally.enabledFrameworks": ["i18next", "react", "vscode"],
"typescript.preferences.importModuleSpecifier": "project-relative",
"cSpell.words": [
"clickaway",
"fastpass",
"navigations",
"persistor",
"Skus",
"stylex",
"stylexjs"
]
}
```