後來才知道,原來在 webpack.config.js 檔案裡,如果沒有用到
webpack
這個變數,其實是不用引入的,這跟我原本的認知不一樣,點破我的盲點 XD也加入
path.join()
修正我的另外一個錯誤。所以在 package.json 裡面,讓設定檔也要被 semistandard 檢查:
"semistandard": { "ignore": [ "src/css/", "dist/*.min.css", "dist/*.min.js", "node_modules/" ] }
然後在 webpack.config.js 裡面,拿掉
var webpack = require('webpack');
,同時引入 var path = require('path');
,修改一下路徑的寫法:module.exports = { entry: './src/js/index.js', output: { path: path.join(__dirname, '/dist'), filename: 'bundle.min.js' } /* Original codes: module.exports = { entry: './src/js/index.js', output: { path: __dirname + '/dist', filename: 'bundle.js' } */
最後再重新用 semistandard 檢查一次,全部都沒有問題了~
胡立老師的直播:
10. 改掉你的壞習慣:ESLint 與 standard
以下是看直播的一些筆記。
1. 利用
.git
hooks
強制規範程式碼。如果要強制自己把程式碼
commit
到專案上之前都要先檢查程式碼是否符合 standard/semistandard 的規範,可以利用 git 裡面的 .git
hooks
。步驟如下:1) 首先開啟隱藏資料夾
.git
。我的作業軟體是 Windows 7,所以參考了這篇:Windows 7 作業系統下顯示隱藏的檔案、資料夾。
備註:git 是如何把每次
commit
的版本儲存起來,而且可以回復到以前的版本?秘密就是在 .git
這個資料夾,用來儲存每次 commit
的歷史資料。顯示隱藏的資料夾之後,就可以在專案資料夾內看到
.git
了,點進去 .git
會看到 hooks
資料夾。再點進去
hooks
之後會看到幾個設定檔的範例。需要用到的是 pre-commit.sample 這個檔案,代表的意思是在
commit
之前指定要做哪些事情。2) 修改 pre-commit.sample。
複製 pre-commit.sample 後把檔名後面的 .sample 拿掉,這樣就會啟用 pre-commit,然後在 pre-commit 檔案內寫下我們想要在
commit
之前執行的東西,如果那一個指令錯的話就無法 commit
,正確的話就可以成功 commit
。在 pre-commit 檔案內寫下:npm run test(需要先在 package.json 檔案內修改
"script"
下的內容,可參考我上一篇的作業筆記:Frontend Intermediate Course - Homework 10)如果程式碼有不符合 standard/semistandard 規範的地方,就無法
commit
,這樣一來就強制自己一定要修改程式碼才能 commit
。想要自己的程式碼更嚴謹的話就可以這樣規範。2. 忽略檢查單行或多行程式碼。
1) 有時候在寫程式碼的時候,可能會遇到一定要用到某種寫法,但不符合 standard/semistandard 規範,這樣就可以告訴 standard/semistandard 忽略檢查那一個部份的程式碼。可參考 standard 的 How Do I Hide A Certain Warning。
忽略檢查單行可以在那一行程式碼的後面加入:
// eslint-disable-line或指定忽略某一項指令的檢查,假設只有忽略檢查 "no-use-before-define" 這個指令:
// eslint-disable-line no-use-before-define
忽略檢查多行可以加入:
/* eslint-disable no-use-before-define */ ...Your codes here... /* eslint-enable no-use-before-define */這裡同樣是只有忽略檢查 "no-use-before-define" 這個指令,如果要全部指令都忽略檢查就拿掉後面的
no-use-before-define
。eslint-disable
是停用 standard 檢查的意思,而eslint-enable
是啟用檢查的意思。2) 如果遇到某些全域變數沒有定義的錯誤時,可以把全域變數加到 package.json 裡面:
{ "standard": { "globals": [ "myVar1", "myVar2" ] } }
或是在使用那個全域變數的檔案內,在最上方加入:
/* global myVar1, myVar2 */這樣就可以告訴 standard/semistandard 忽略檢查那些全域變數。
不過當然是必要使用的時候才忽略檢查,不然全部都忽略檢查就失去用 standard/semistandard 檢查的意義了 XD
這篇就是這個課程的最後一個筆記了,因為懶惰所以拖了幾天才寫完,有一點不捨(即使每次寫作業跟筆記其實都有點痛苦 XD)。不過回頭看自己寫的所有筆記,就會很慶幸當時花了那些時間仔細的記錄下來,有些細節沒有常常使用或複習真的很容易就忘記了。希望自己可以繼續加油!
No comments:
Post a Comment