Pada artikel kali ini saya akan bagikan Config ESLint Yang Saya Biasa Gunakan. ESLint sangat bermanfaat agar code style dalam suatu project tetap seragam dengan aturan-aturan yang telah ditetapkan.
Setup Project
Kali ini saya akan membuat project React dengan menggunakan yarn
dan vite
.
yarn create vite
Bisa diisi sesuai dengan yang diinginkan, misalnya:
- Name:
my-eslint-config
. - Framework:
React
. - Variant:
TypeScript
.
Di sini saya akan mencontohkan yang variant TypeScript
, tapi ini juga berjalan pada variant JavaScript
.
Install Dependencies
Ada beberapa dependencies yang akan diinstall:
yarn add -D eslint prettier typescript eslint-config-prettier eslint-plugin-import eslint-plugin-prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin
Setup Module Aliases
Agar terhindar dari import yang seperti berikut:
import ExampleComponent from '../../../../components/Example.component';
Kita bisa memanfaatkan module aliases agar import bisa menjadi lebih rapi, contohnya seperti berikut:
import ExampleComponent from '@components/Example.component';
Kita akan coba membuat dan mengubah beberapa file untuk bisa mencontohkan module alises.
src/components/Example.component.tsx
const ExampleComponent = () => {
return <div>Example Component</div>;
};
export default ExampleComponent;
src/utils/Example.util.ts
export const example = () => {
console.log('example');
};
tsconfig.json
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": [
"DOM",
"DOM.Iterable",
"ESNext"
],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"baseUrl": ".",
"paths": {
"@components/*": [
"src/components/*"
],
"@utils/*": [
"src/utils/*"
]
}
},
"include": [
"src"
],
"references": [
{
"path": "./tsconfig.node.json"
}
]
}
vite.config.ts
import path from 'path';
import react from '@vitejs/plugin-react';
import { defineConfig } from 'vite';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@components': path.resolve(__dirname, './src/components'),
'@utils': path.resolve(__dirname, './src/utils'),
},
},
});
Kalau menggunakan JavaScript
maka file yang di ubah adalah jsconfig.json
dan vite.config.js
.
Setup Prettier
Buat 1 file di root project dengan nama .prettierrc.cjs
.
module.exports = {
bracketSpacing: true,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
};
Untuk lebih lengkapnya, bisa di pelajari pada Prettier.
Setup ESLint
Buat 1 file di root project dengan nama .eslintrc.cjs
.
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint', 'import', 'prettier'],
extends: ['eslint-config-prettier', 'plugin:prettier/recommended'],
rules: {
'import/order': [
'error',
{
groups: ['builtin', 'external', 'internal'],
pathGroups: [
{
pattern: 'react',
group: 'external',
position: 'before',
},
],
pathGroupsExcludedImportTypes: ['react'],
'newlines-between': 'never',
alphabetize: {
order: 'asc',
caseInsensitive: true,
},
},
],
'sort-imports': [
'error',
{ ignoreMemberSort: false, ignoreDeclarationSort: true },
],
},
settings: {
'import/internal-regex': '^@components|^@utils',
},
};
Kalau tidak menggunakan React
maka config react
bisa dihapus saja.
Autofix VSCode
Install extension ESLint pada VSCode dengan cara berikut:
- Buka Extensions di sidebar VSCode.
- Cari
eslint
. - Install ESLint yang publishernya Microsoft.
Kemudian buat 1 folder yang bernama .vscode
pada root project dan di dalamnya tambah 1 file berikut.
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
Demo
Kita akan coba mengacak-acak code pada src/App.tsx
seperti berikut:
Setelah kita tekan CTRL + S
(Windows) atau Cmd + S
(Mac).
Maka code kita akan disesuaikan dengan rules
yang ditentukan pada ESLint sehingga akan rapi kembali. Ini sangat berguna dan akan membuat kita semakin produktif dalam development karena autofix
akan berjalan ketika kita melakukan save
file.
Penutup
Untuk contoh codenya bisa dilihat pada GitHub Repository My Eslint Config.
Terimakasih sudah membaca artikel Gunakan Config ESLint Berikut Agar Codingan Menjadi Rapi. Semoga artikel ini bisa bermanfaat bagi teman-teman.