Chuyển đến nội dung chính

npm, ESLint & Prettier

Tiếp nối bài viết trước mình đã giới thiệu các bạn cách dùng ReactJs chỉ thuần Javascript. Tuy nhiên trong các dự án thực tế người ta không sử dụng cách làm việc đó để tạo nên một sản phẩm chất lượng dễ dàng maintain. Một trong những cái quan trọng hơn cả là làm việc nhóm được với nhiều người. Bạn thử tưởng rằng, trong một project mà mỗi ông thích code một phong cách thì sau một thời gian nó sẽ thành một một mớ hỗn độn :)

npm

npm là viết tắt của cụm từ Node Package Manager. Nó là một Package Manager cho Nodejs. Ngoài npm thì bạn cũng có thể sử dụng một công cụ khác là yarn. Bạn tưởng tượng rằng có rất nhiều người viết các thư viện open source và đẩy lên Node Registry, bạn có thể dùng npm để kéo các thư viện đó về project của mình. Không chỉ dừng lại ở đó npm cũng có thể sử dụng như một command line tools cũng rất ổn.

Để bắt đầu sử dụng npm bạn di chuyển tới thư mục gốc của project adopt-me và chạy lệnh npm init. Nếu bạn chưa cài đặt Node, bạn có thể tải bản mới nhất về cài. Khi chạy câu lệnh này thì bạn sẽ được hỏi một loạt các câu hỏi. nếu bạn không biết bạn có thể nhấn Enter. Sau này mình có thể chỉnh sửa lại sau trong file package.json

Chất lượng code

Để giảm thiểu các sai xót trong quá trình viết code cũng như format code. Mà quan trọng nhất là mình lười. Những việc này nên để máy kiểm tra cho mau lẹ :) Các bạn nên cài ESLinst và Prettier vào để kiểm tra code và format code một cách tự động.

Prettier

Prettier là một công cụ hữu dụng trong việc format code tự động. Nêú bạn sử dụng VSCode bạn có thể cài đặt trong phần extension như hình bên dưới


Tiếp đó bạn mở Preferences --> Settings và thêm đoạn mã bên dưới rồi save lại.
 "[javascript]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    },
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascriptreact]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    },
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    },
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescriptreact]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    },
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },

Ở đây mình thêm luôn cả một vài ngôn ngữ khác cho các bạn. Để yên tâm ngồi code mà không lo việc format code. Sau khi thêm đoạn code này bạn save lại và thử chỉnh sửa một file Javascript sau đó save lại sẽ thấy điều kỳ diệu.

Nếu bạn không dùng VSCode bạn có thể cài như sau npm install -g prettier. Sau đó bạn muốn format file nào thì bạn có thể chạy lệnh prettier script.js. Nếu muốn thự hiện thay đổi trên file đó luôn bạn có thể chạy lệnh prettier --write script.js.

Nếu muốn customize thì bạn tạo file .prettierrc tại thư mục gốc của project và chỉnh sửa thay đổi theo mong muốn. 

npm&Yarn scripts


Như đã nói bên trên, npm hay Yarn không chỉ dừng lại ở quản lý package cài đặt. Nó còn có thể dùng để cài đặt các script thay vì bạn phải nhớ câu lệnh rất dài

Bạn có thể mở file package.json và thêm đoạn code bên dưới:
"scripts": {
	"format": "prettier --write \"src/**/*.{js,jsx}\"",
},

Sau đó mở terminal lên và gõ npm format hoặc yarn format. Các file có đuôi .js hoặc .jsx trong thư mục code của bạn sẽ được format lại theo chuẩn. Đơn giản hơn nhiều phải không? 

ESLint

Nếu bạn muốn bắt buộc các người làm việc trong team mình phải tuân theo chuẩn mà bạn định nghĩa ra. Bạn có thể sử dụng ESLint để đưa ra cảnh báo code sai định dạng. Để sử dụng ESLint các bạn cần cài đặt thư viên vào môi trường dev của mình bằng lệnh npm install -D eslint eslint-config-prettier  

Tiếp đó bạn bạn thêm file .eslintrc.json thêm vào thư mục gốc của code với nội dung như sau:
{
  "extends": ["eslint:recommended", "prettier", "prettier/react"],
  "plugins": [],
  "parserOptions": {
    "ecmaVersion": 2018,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true,
    "browser": true,
    "node": true
  }
}

sau đó bạn thêm dòng sau vào block script trong file package.json 

"lint": "eslint \"src/**/*.{js,jsx}\" --quiet",

Wow! Bây giờ bạn sửa code một file js và chay yarn lint. Trên terminal sẽ đưa ra cảnh báo code cho bạn.



Tạm thời bạn bỏ qua nhé. Trong các bài sau mình sẽ sửa sao cho code chạy chuẩn không cần chỉnh :)

Github code tại branch lesson-2-npm-eslint-prettier

Bài viết này mình muốn truyền tải lại ý nghĩa của việc thống nhất phong cách code trong một team. Điều này rất quan trọng. Nó giúp bạn rèn luyện khả năng làm ra sản phẩm chất lượng cũng như việc trao đổi và review code giữa các thành viên trong team của bạn. Bài viết tiếp theo mình sẽ trình bày về một build tools đang được cộng đồng sử dụng nhiều hiện nay là Parcel.


Bạn sẽ tìm thấy niềm vui khi giúp đỡ người khác bằng tất cả tấm lòng

Nhận xét

Bài đăng phổ biến từ blog này

Load balancing howto: LVS + ldirector + heartbeat 2

Problem A high capacity load balancing solution is needed to address current and future needs to provide highly available and scalable services. Solution Linux Virtual Server (LVS) provides the means of building scalable and high performing virtual cluster server. Heartbeat 2 can be used to feather increase the availability of the virtual services. Limitations Iptables redirection to avoid ARP problems with direct routing load balancing is not covered. Heartbeat 2 SSH STONITH is used without quorumd or pingd. Very limited "tiereaker" capability. Concepts LVS hides real servers behind a virtual IP and load balances the incoming request across all cluster nodes based on a scheduling algorithm. It implements transport-layer load balancing inside the Linux kernel, also called Layer-4 switching. There are 3 types of LVS load balancing: Network Address Translation (NAT) Incoming requests arrive at the virtual IP and are forwarded to the real servers by changing the

Thủa sơ khai của React - Pure React

Pure React Chúng ta hãy cùng bắt đầu học Reactjs với cách viết Pure React. Nói không với các bước compile, không với Webpack, Parcel, JSX mà chỉ có Javascript thuần tuý thôi. Vì mình biết nếu bây giờ nhảy thẳng vào các khái niệm đó, các bạn sẽ choáng ngợp bởi có quá nhiều khái niệm, và cũng không hiểu rằng tại sao họ lại dùng những thư viện đó và dùng nó khi nào nữa :) Nào hãy cùng tạo một project tên là adopt-me  mình lấy tên như này bởi mình muốn sử dụng API của trang Petfinder.com  cho các bài hướng dẫn sau về xử lý kết quả trả về từ API. Và cũng vì lý do nhân văn là các bạn nên nhận nuôi một con thú cưng nhé hihi. Mình khuyến khích các bạn lập trình sử dụng hệ điều hành Linux hoặc MacOs nó rất tiện cho bạn sử dụng dòng lệnh và thao tác nhanh chóng như dân lập trình Pro. Chúng ta bắt đầu tạo một thư mục adopt-me , dưới thư mục chúng ta tạo một thư mục src lưu code và tạo một file index.html trong thư mục đó. Cách đơn giản là bạn mở terminal lên và gõ câu lệnh. mkdir -p adopt-me/

Làm thế nào để có thể nhúng source code vào bài viết trên Blogger?

Nói nhảm Là một developer mình luôn luôn muốn chia sẻ những gì mình học được tới mọi người. Và một trong những cách đó là ngồi viết nhảm nhí trên blog :). Hôm nay chợt nảy ra ý định muốn tạo các bài hướng dẫn các sử dụng ReatJs từ cơ bản tới không còn cơ bản nữa. Nhưng chợt nhận ra mình không có khả năng viết lách lắm :) Nói hơi nhảm xíu nhé mọi người. Nhưng nếu ai ủng hộ mình viết một series hướng dẫn lập trình web sử dụng ReactJs thì comment bên dưới nhé. Còn bây giờ quay lại chủ đề chính của mình trong bài viết này là làm sao có thể nhúng đoạn code đẹp trai này vào bất cứ blog nào hỗ trợ soạn HTML. Javascript 1 console.log( "Bạn rất đẹp trai" ); Python 1 print ( "Bạn còn đẹp trai hơn" ) và có rất nhiều ngôn ngữ khác nữa. Wow nghề viết lách lại không đơn giản :) Nói thật Mình có hỏi bạn bè đồng nghiệp và rồi hỏi anh Google thân thuộc thì hiện tại tìm được hai giải pháp có thể giúp anh em code tung trời và trình bày đẹp trai trên bài viết của mình. Cách t