diff --git a/.eslintrc.js b/.eslintrc.js index 2c33f56acf..85b42421ec 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -21,6 +21,7 @@ module.exports = { '!.*.js', 'packages/analytics', 'packages/common', + 'packages/design-tokens', 'packages/web-react', 'packages/web', 'packages/form-validations', diff --git a/.prettierignore b/.prettierignore index 7e411d289a..f5ac26db2f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -79,3 +79,7 @@ CODEOWNERS # variable-scss exporter generated cjs exporters/variables-scss/generated/**/*.cjs + +# design-tokens generated files +packages/design-tokens/src/**/*.ts +packages/design-tokens/src/**/*.scss diff --git a/packages/design-tokens/.eslintignore b/packages/design-tokens/.eslintignore new file mode 100644 index 0000000000..cc36ce8bf9 --- /dev/null +++ b/packages/design-tokens/.eslintignore @@ -0,0 +1,18 @@ +# .eslintignore + +node_modules + +# NOTE: +# The following directives are only relevant when linting the whole +# project directory, ie. running `eslint .` ⚠️ + +# If you compile JavaScript into some output folder, exclude it here +dist +build + +# Highly recommended to re-include JavaScript dotfiles to lint them +# (This will cause .eslintrc.js to be linted by ESLint 🤘) +!.*.js + +# Some tools use this pattern for their configuration files. Lint them! +!*.config.js diff --git a/packages/design-tokens/.eslintrc.cjs b/packages/design-tokens/.eslintrc.cjs new file mode 100644 index 0000000000..eda1c89421 --- /dev/null +++ b/packages/design-tokens/.eslintrc.cjs @@ -0,0 +1,46 @@ +module.exports = { + extends: [ + '../../.eslintrc', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'plugin:prettier/recommended', + '@lmc-eu/eslint-config-jest', + ], + + parser: '@typescript-eslint/parser', // the TypeScript parser we installed earlier + + parserOptions: { + ecmaVersion: 'latest', + project: './tsconfig.eslint.json', + }, + + settings: { + 'import/resolver': { + node: { + extensions: ['.js', '.ts'], + }, + }, + }, + + plugins: ['promise', '@typescript-eslint', 'prettier'], + rules: { + // disable for `scripts` and `config` + '@typescript-eslint/no-var-requires': 'off', + // allow ++ in for loops + 'no-plusplus': ['error', { allowForLoopAfterthoughts: true }], + // disabled due to typescript + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': ['error', { allow: ['resolve', 'reject', 'done', 'next', 'error'] }], + // disabled due to typescript + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': 'warn', + // We are using typescript, disable jsdoc rules + 'jsdoc/require-jsdoc': 'off', + 'jsdoc/require-returns': 'off', + 'jsdoc/require-param-type': 'off', + // allow reassign in properties + 'no-param-reassign': ['warn', { props: false }], + // support monorepos + 'import/no-extraneous-dependencies': ['error', { packageDir: ['./', '../../'] }], + }, +}; diff --git a/packages/design-tokens/package.json b/packages/design-tokens/package.json index 0e454666d5..8daf65585e 100644 --- a/packages/design-tokens/package.json +++ b/packages/design-tokens/package.json @@ -30,7 +30,9 @@ "build:js": "vite build", "build:scss": "shx mkdir -p scss && shx cp -r src/scss/* scss/", "clean": "rimraf esm cjs umd scss types", - "lint": "stylelint ./src/**/*.scss", + "lint": "npm-run-all --serial lint:scripts lint:styles", + "lint:scripts": "eslint ./src/**/*.ts", + "lint:styles": "stylelint ./src/**/*.scss", "test": "yarn lint", "types": "tsc" }, diff --git a/packages/design-tokens/tsconfig.eslint.json b/packages/design-tokens/tsconfig.eslint.json new file mode 100644 index 0000000000..07094afeb3 --- /dev/null +++ b/packages/design-tokens/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["./", "./.eslintrc.cjs"] +}