Node.js Linting & Formatting

Node.js திட்டங்களில் குறியீட்டு தரம் மற்றும் நிலைத்தன்மையை பராமரிக்க கற்றுக்கொள்ளுங்கள்

குறியீட்டு தரம்

நிலையான குறியீட்டு தரம் மற்றும் பாணி Node.js திட்டங்களுக்கு முக்கியமானது, குறிப்பாக குழு சூழல்களில்.

இது உதவுகிறது:

குறியீட்டின் வாசிக்கும் தன்மை மற்றும் பராமரிப்பு

குறியீட்டை எளிதாக படிக்கவும் பராமரிக்கவும் உதவுகிறது

ஆரம்ப பிழை கண்டறிதல் மற்றும் தடுப்பு

பிழைகளை ஆரம்பத்திலேயே கண்டறிந்து தடுக்கிறது

குழுவில் நிலையான குறியீட்டு பாணி

குழுவில் அனைவருக்கும் ஒரே மாதிரியான குறியீட்டு பாணியை உறுதி செய்கிறது

தானியங்கி குறியீட்டு மதிப்பாய்வுகள்

குறியீட்டு மதிப்பாய்வுகளை தானியங்கி செய்கிறது

சிறந்த டெவலப்பர் அனுபவம்

டெவலப்பர்களின் வேலை அனுபவத்தை மேம்படுத்துகிறது

💡 குறிப்பு:

இந்த வழிகாட்டி JavaScript மற்றும் TypeScript கருவியியல் இரண்டையும் உள்ளடக்கியது, ஏனெனில் அவை ஒத்த லிண்டிங் மற்றும் ஃபார்மேட்டிங் சூழல்களைப் பகிர்ந்து கொள்கின்றன.

ESLint: JavaScript/TypeScript லிண்டிங்

ESLint மிகவும் பிரபலமான JavaScript/TypeScript லிண்டிங் கருவியாகும், இது உங்கள் குறியீட்டில் காணப்படும் வடிவங்களை அடையாளம் கண்டு அறிக்கை செய்ய உதவுகிறது. இது மிகவும் கட்டமைக்கக்கூடியது மற்றும் ஆதரிக்கிறது:

நிறுவல்

npm install --save-dev eslint

விரிவான ESLint கட்டமைப்பு

TypeScript ஆதரவுடன் கூடிய Node.js திட்டத்திற்கான மிகவும் முழுமையான .eslintrc.json கட்டமைப்பு இங்கே:

{
  "env": {
    "node": true,
    "es2021": true,
    "browser": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": 12,
    "sourceType": "module"
  },
  "plugins": ["@typescript-eslint"],
  "rules": {
    "semi": ["error", "always"],
    "quotes": ["error", "single"],
    "indent": ["error", 2],
    "no-console": "warn",
    "no-unused-vars": "warn"
  }
}

மேம்பட்ட ESLint பயன்பாடு

அடிப்படை லிண்டிங்கைத் தவிர, ESLint குறியீட்டு தரத்தை பராமரிக்க சக்திவாய்ந்த அம்சங்களை வழங்குகிறது:

பொதுவான கட்டளைகள்

# Lint all JavaScript/TypeScript files
npx eslint .

# Fix auto-fixable issues
npx eslint --fix .

# Lint specific file
npx eslint src/index.js

Prettier: குறியீடு ஃபார்மேட்டர்

Prettier என்பது ஒரு கருத்தியல் குறியீடு ஃபார்மேட்டர் ஆகும், இது உங்கள் குறியீட்டை பாகுபடுத்தி அதன் சொந்த விதிகளுடன் மீண்டும் அச்சிடுவதன் மூலம் ஒரு நிலையான பாணியை செயல்படுத்துகிறது. இது ஆதரிக்கிறது:

💡 உதவிக்குறிப்பு:

ஃபார்மேட்டிங்கிற்கு Prettier ஐயும், சாத்தியமான பிழைகளைப் பிடிப்பதற்கும் குறியீட்டு வடிவங்களை செயல்படுத்துவதற்கும் ESLint ஐயும் பயன்படுத்தவும்.

நிறுவல்

npm install --save-dev --save-exact prettier

விரிவான Prettier கட்டமைப்பு

பொதுவான விருப்பங்களுடன் கூடிய நன்கு ஆவணப்படுத்தப்பட்ட .prettierrc கட்டமைப்பு இங்கே:

{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5",
  "printWidth": 100,
  "bracketSpacing": true,
  "arrowParens": "avoid"
}

மேம்பட்ட Prettier பயன்பாடு

Prettier உங்கள் பணிப்பாய்வில் பல்வேறு வழிகளில் தனிப்பயனாக்கப்பட்டு ஒருங்கிணைக்கப்படலாம்:

பொதுவான கட்டளைகள்

# Format all files
npx prettier --write .

# Check formatting without making changes
npx prettier --check .

# Format specific file
npx prettier --write src/index.js

தொந்தரவில்லாத ESLint + Prettier ஒருங்கிணைப்பு

ESLint மற்றும் Prettier க்கு இடையேயான மோதல்களைத் தவிர்க்க, சரியான ஒருங்கிணைப்பை அமைக்கவும்:

⚠️ முக்கியமானது:

விதி மோதல்களைத் தடுக்க இந்த தொகுப்புகளை எப்போதும் நிறுவவும் மற்றும் கட்டமைக்கவும்:

npm install --save-dev eslint-config-prettier eslint-plugin-prettier

பின்னர் உங்கள் ESLint கட்டமைப்பைப் புதுப்பிக்கவும்:

{
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:prettier/recommended"
  ]
}

மேம்பட்ட எடிட்டர் ஒருங்கிணைப்பு

🚀 தொழில்முறை உதவிக்குறிப்பு:

அதிகபட்ச உற்பத்தித்திறனுக்கு உங்கள் எடிட்டரை சேமிக்கும் போது தானாகவே குறியீட்டை சரிசெய்யவும் வடிவமைக்கவும் அமைக்கவும்.

VS Code: அல்டிமேட் அமைப்பு

VS Code இல் சிறந்த வளர்ச்சி அனுபவத்திற்கு, இந்த படிகளைப் பின்பற்றவும்:

பின்வரும் நீட்டிப்புகளை நிறுவவும்:

உங்கள் VS Code settings.json ஐ கட்டமைக்கவும்:

{
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"],
  "prettier.requireConfig": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}

பிற எடிட்டர் அமைப்புகள்

பிற பிரபலமான எடிட்டர்களுக்கான அமைப்பு வழிமுறைகள் இங்கே:

Husky & lint-staged உடன் Git Hooks

உங்கள் குறியீட்டை கமிட் செய்வதற்கு முன் தானாகவே வடிவமைத்து லிண்ட் செய்யும் ப்ரீ-கமிட் ஹுக்குகளை அமைப்பதன் மூலம் மோசமான குறியீட்டை கமிட் செய்வதைத் தடுக்கவும்:

🔒 ப்ரீ-கமிட் ஹுக்குகள் ஏன் பயன்படுத்த வேண்டும்?

குறியீடு கமிட் செய்வதற்கு முன் பாணி பிரச்சினைகளை தானாகவே சரிசெய்வதன் மூலம் உங்கள் குழுவில் நிலையான குறியீட்டு தரத்தை உறுதி செய்கின்றன.

கமிட்களுக்கு முன் குறியீட்டு தரத்தை உறுதி செய்ய ப்ரீ-கமிட் ஹுக்குகளை அமைக்கவும்:

நிறுவல்

npm install --save-dev husky lint-staged

கட்டமைப்பு (package.json)

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  }
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,md,yml}": [
      "prettier --write"
    ]
  }
}

மேம்பட்ட சிறந்த நடைமுறைகள்

1. மோனோரெபோ அமைப்பு

மோனோரெபோ கட்டமைப்பைப் பயன்படுத்தும் திட்டங்களுக்கு:

// In your root package.json
{
  "workspaces": ["packages/*"],
  "scripts": {
    "lint": "yarn workspaces run lint",
    "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\""
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.0.0",
    "@typescript-eslint/parser": "^5.0.0",
    "eslint": "^8.0.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^4.0.0",
    "husky": "^7.0.4",
    "lint-staged": "^12.0.0",
    "prettier": "^2.5.0",
    "typescript": "^4.5.0"
  },
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,md,yml,yaml}": [
      "prettier --write"
    ]
  }
}

2. செயல்திறன் மேம்படுத்தல்

பெரிய திட்டங்களுக்கு, ESLint செயல்திறனை மேம்படுத்தவும்:

// .eslintrc.js
module.exports = {
  cache: true, // Enable caching
  cacheLocation: '.eslintcache', // Cache file location
  ignorePatterns: ['**/node_modules/**', '**/dist/**'], // Ignore patterns
  parserOptions: {
    project: './tsconfig.json', // Only for TypeScript
    projectFolderIgnoreList: ['**/node_modules/**']
  }
};

3. குறுக்கு-எடிட்டர் நிலைத்தன்மைக்கான EditorConfig

வெவ்வேறு எடிட்டர்கள் மற்றும் IDEகளில் நிலையான குறியீட்டு பாணிகளை பராமரிக்க ஒரு .editorconfig கோப்பைச் சேர்க்கவும்:

# EditorConfig is awesome: https://EditorConfig.org
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{json,yml}]
indent_style = space
indent_size = 2

[*.{cmd,sh}]
indent_style = tab

4. CI/CD ஒருங்கிணைப்பு

உங்கள் CI/CD பைப்லைனில் லிண்டிங் மற்றும் ஃபார்மேட்டிங் சோதனைகளைச் சேர்க்கவும்:

# .github/workflows/ci.yml
name: CI

on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '16'
      - run: npm ci
      - run: npm run lint
      - run: npm run format:check

லிண்டிங் சிறந்த நடைமுறைகள்

அடிப்படை கட்டமைப்புடன் தொடங்கவும் (eslint:recommended போன்றவை) மற்றும் தேவைக்கேற்ப விரிவுபடுத்தவும்
விதி தீவிரம் நிலைகளுடன் நிலையானதாக இருங்கள் (error, warn, off)
தேவையானபோது கருத்துகளுடன் விதி விதிவிலக்குகளை ஆவணப்படுத்தவும்
உங்கள் ESLint மற்றும் பிளக்கின் பதிப்புகளை தவறாமல் புதுப்பிக்கவும்
TypeScript உடன் பணிபுரியும் போது TypeScript-குறிப்பிட்ட விதிகளைப் பயன்படுத்தவும்

ஃபார்மேட்டிங் சிறந்த நடைமுறைகள்

வரி நீளங்களை நியாயமானதாக வைத்திருங்கள் (80-120 எழுத்துகள்)
நிலையான மேற்கோள் பாணியைப் பயன்படுத்தவும் (ஒற்றை அல்லது இரட்டை மேற்கோள்கள்)
அரைப்புள்ளி பயன்பாட்டில் நிலையானதாக இருங்கள்
சுத்தமான வித்தியாசங்களுக்கு பொருள்கள் மற்றும் வரிசைகளில் பின்னால் உள்ள காற்புள்ளிகளைப் பயன்படுத்தவும்
சேமிக்கும் போது வடிவமைக்க உங்கள் எடிட்டரை கட்டமைக்கவும்

குழு பணிப்பாய்வு

குழுவில் ESLint மற்றும் Prettier கட்டமைப்புகளைப் பகிரவும்
CI/CD பைப்லைன்களில் லிண்டிங் மற்றும் ஃபார்மேட்டிங்கைச் சேர்க்கவும்
பிரச்சினைகளை ஆரம்பத்திலேயே பிடிக்க ப்ரீ-கமிட் ஹுக்குகளைப் பயன்படுத்தவும்
உங்கள் குறியீடு பாணி முடிவுகளை ஆவணப்படுத்தவும்
உங்கள் குறியீடு பாணி வழிகாட்டியை தவறாமல் மதிப்பாய்வு செய்து புதுப்பிக்கவும்

பயிற்சி

சரியான கருவி பெயரை இழுத்து விடவும்.

🔤 ______ JavaScript மற்றும் Node.js க்கான ஒரு பிரபலமான லிண்டிங் கருவியாகும்.

Prettier
✗ தவறு! Prettier ஒரு குறியீடு ஃபார்மேட்டர் ஆகும், லிண்டிங் கருவி அல்ல
ESLint
✓ சரி! ESLint JavaScript மற்றும் Node.js க்கான மிகவும் பிரபலமான லிண்டிங் கருவியாகும்
TypeScript
✗ தவறு! TypeScript ஒரு நிரலாக்க மொழி ஆகும், லிண்டிங் கருவி அல்ல
Husky
✗ தவறு! Husky Git ஹுக்குகளை நிர்வகிக்கும் கருவியாகும், லிண்டிங் கருவி அல்ல