ESLint(JavaScript 代碼檢查器)
關於 ESLint/@cybozu/eslint-config
ESLint 是 Nicholas C. Zakas 於 2013 年作為開源專案發佈的 JavaScript 語法檢查工具。
ESLint 具有靈活的規則配置,並且公開了許多規則集。
Cybozu還發佈了名為「@cybozu/eslint-config」的ESLint規則集。
本文將對ESLint和@cybozu/eslint-config的設定方法以及kintone JavaScript文件的檢查方法進行說明。
若您的ESLint或@cybozu/eslint-config版本較舊,請參考後述的「 從@cybozu/eslint-config v25以前版本升級 」進行升級。
GitHub
https://github.com/cybozu/eslint-config
授權
文件
https://github.com/cybozu/eslint-config/blob/master/README.md
下準備
ESLint 需要 Node.js 和 npm(一個包管理工具)才能運行。
安裝 Node.js 時,會自動安裝 npm。
-
Node.js從官方網站下載安裝程式。
Node.js官方網站
若要確定所需的Node.js版本,請確認package.json的 engines 屬性。
package.json
例如,以下要求Node.js版本22或更高版本。1 2 3"engines": { "node": ">=22" }, -
運行下載的安裝程式並按照畫面上的說明進行設定。
Quickstart
Step1:安裝所需的套件
安裝ESLint和@cybozu/eslint-config。
-
創建工作目錄。在此示例中,目錄名稱為「works」。
1mkdir works -
轉到您建立的工作目錄。
-
安裝ESLint和@cybozu/eslint-config。
1 2 3 4cd works npm init -y npm install --save-dev eslint npm install --save-dev @cybozu/eslint-config -
確保已安裝 ESLint 和 @cybozu/eslint-config。
@後面的數位是已安裝的ESLint或@cybozu/eslint-config的版本號。1 2 3 4npm ls --depth=0 works ├── @cybozu/eslint-config@26.0.0 └── eslint@10.8.0
Step2:建立配置檔
在工作目錄中,建立內容如下、名為「eslint.config.mjs」的檔案。
本文以ESM格式編寫。
由於.mjs副檔名的檔案一律以ESM格式處理,即使是尚未在package.json中加入"type": "module"的CommonJS環境專案,也可以用ESM格式編寫。
|
|
Step3:建立要檢查的檔案
準備要使用 ESLint 檢查的 JavaScript 檔。
在此示例中,我們將創建一個包含以下內容的 JavaScript 檔「sample.js」。
此 JavaScript 檔旨在在應用 ESLint 時導致錯誤。
|
|
Step4:執行 ESLint
運行ESLint。
|
|
當您運行它時,您將看到類似於以下內容的消息:
|
|
在這種情況下,您可以看到「sample.js」包含以下錯誤:
- warning 缺少分號。
- warning 操作員前後必須有一個空格。
- error 不使用值「result」。
如果顯示錯誤,請根據錯誤級別(error/warning)修改 JavaScript 檔。
有關錯誤內容的更多資訊,請查看ESLint官方網站上的規則。
ESLint官方網站規則
- error:請務必修復它。JavaScript 可能無法正常工作或可能出現意外行為。
- warning:最好修復它,但不是必需的。
如果在沒有錯誤的檔上運行它,則不會顯示任何消息。
|
|
Step5:自動更正代碼
有些錯誤可以自動更正。
如果要自動更正錯誤,請使用--fix 該選項運行它。
|
|
該命令修改 JavaScript 檔。
如果有任何無法自動更正的剩餘錯誤,則會顯示無法更正的錯誤的詳細資訊。
|
|
如果您遇到無法自動更正的錯誤,您可以自行修復,具體取決於錯誤是什麼。
補充
使用其他規則集
在Quickstart中,我們為在ES2015(ES6)或更高版本中開發kintone自定義的人員使用了規則集。
@cybozu/eslint-config 提供了可用於其他場景的規則。
請根據實際情況,修改「eslint.config.mjs」。
以下是一些最常見的模式:
有關所有規則,請參閱 GitHub 上的README。
README
謹慎
@cybozu/eslint-config v26對規則集進行了調整。
依所使用的預設集不同,可能會出現新的lint錯誤,或不再檢測出原本的lint錯誤。
使用ES5開發kintone定製時
|
|
在Node.js中自定義kintone的開發
|
|
ES2015 (ES6) 及以上版本的通用編碼
|
|
Node.js中的通用編碼
|
|
從@cybozu/eslint-config v25以前版本升級
@cybozu/eslint-config v26為了對應ESLint v10進行了大幅變更。
v25以前的版本仍可繼續在原先對應的ESLint版本中使用。
但ESLint v10以下版本將於2026年8月6日結束維護,因此建議將@cybozu/eslint-config升級至v26。
升級時需進行以下對應:
- 將設定檔以Flat Config格式撰寫。(
.eslintrc.*等舊格式將無法使用) - 將設定檔以ESM格式撰寫。
- 修改預設集的匯入路徑。
- 將Node.js版本升級至v22以上。
升級時,建議先將現有設定轉換為Flat Config與ESM格式,再將@cybozu/eslint-config的版本升級至v26。
請依現有設定選擇適合的升級步驟。
尚未遷移至Flat Config的情況
以下是在.eslintrc.*(.eslintrc.js、.eslintrc.json、.eslintrc.yml等)中使用@cybozu/eslint-config的情況所需的步驟。
請先遷移至Flat Config(ESM格式),再升級至v26。
-
在工作目錄中新建
eslint.config.mjs,並依所使用的預設集,撰寫如下內容。
預設集名稱對照請參閱「 使用其他規則集 」。1 2 3 4 5import kintoneCustomize from '@cybozu/eslint-config/presets/kintone-customize'; export default [ ...kintoneCustomize, ]; -
若曾在
.eslintrc.*中新增自訂規則等內容,請將其加入eslint.config.mjs的陣列中。1 2 3 4 5 6 7 8 9 10import kintoneCustomize from '@cybozu/eslint-config/presets/kintone-customize'; export default [ ...kintoneCustomize, { rules: { 'no-console': 'warn', }, }, ]; -
刪除
.eslintrc.*。 -
將套件更新至最新版本。
1npm install --save-dev eslint@latest @cybozu/eslint-config@latest
Flat Config + CommonJS的情況
若您在eslint.config.js中以require載入@cybozu/eslint-config,請依以下步驟改寫為ESM格式後,再升級至v26。
-
將設定檔的副檔名從
.js重新命名為.mjs。 -
將CommonJS的寫法改寫為ESM寫法。
同時請從匯入路徑中刪除/flat與結尾的.js。變更前:
1 2 3 4 5const config = require('@cybozu/eslint-config/flat/presets/kintone-customize.js'); module.exports = [ ...config, ];變更後:
1 2 3 4 5import kintoneCustomize from '@cybozu/eslint-config/presets/kintone-customize'; export default [ ...kintoneCustomize, ]; -
將套件更新至最新版本。
1npm install --save-dev eslint@latest @cybozu/eslint-config@latest
Flat Config + ESM的情況
以下是已使用ESM格式(eslint.config.mjs,或eslint.config.js + "type": "module")使用@cybozu/eslint-config的情況所需的步驟。
僅需修改匯入路徑並更新套件即可完成。
-
從匯入路徑中刪除
/flat與結尾的.js。變更前:
1import kintoneCustomize from '@cybozu/eslint-config/flat/presets/kintone-customize.js';變更後:
1import kintoneCustomize from '@cybozu/eslint-config/presets/kintone-customize'; -
將套件更新至最新版本。
1npm install --save-dev eslint@latest @cybozu/eslint-config@latest
修訂記錄
- 2018年12月21日
- 將軟體包名稱從「eslint-config-kintone」變更為「@cybozu/eslint-config」
- 2019年8月30日
- 將過程從全域安裝方法變更為本地安裝方法。
- 2023年2月1日
- 由於Cybozu產品不再支援Internet Explorer,因此在ES2015(ES6)及之後,規則集已變更為kintone自定義規則集。
- 2025年2月4日
- 根據 ESLint 版本 9 或更高版本的寫法修改配置文件
- 2026年7月27日
- 更新為@cybozu/eslint-config v26以後的設定步驟
- 新增「從@cybozu/eslint-config v25以前版本升級的方法」
