更多gulp常用插件使用請訪問:gulp常用插件匯總
** gulp-eslint**這是一個用於識別和報告在ECMAScript/JavaScript代碼中找到的模式的Gulp插件。。
安裝
一鍵安裝不多解釋
npm install --save-dev gulp-eslint
使用
基礎使用:
const {src, task} = require('gulp');
const eslint = require('gulp-eslint');
task('default', () => {
return src(['scripts/*.js'])
// eslint()將lint輸出附加到“eslint”屬性 以供其它模塊使用
.pipe(eslint())
// format()將lint結果輸出到控制台。
// 或者使用eslint.formatEach()(參見文檔)。
.pipe(eslint.format())
// 使進程退出時具有錯誤代碼(1)
// lint錯誤,最后將流和管道返回failAfterError。
.pipe(eslint.failAfterError());
});
或使用插件API進行以下操作:
gulp.src(['**/*.js','!node_modules/**'])
.pipe(eslint({
rules: {
'my-custom-rule': 1,
'strict': 2
},
globals: [
'jQuery',
'$'
],
envs: [
'browser'
]
}))
.pipe(eslint.formatEach('compact', process.stderr));
有關其他示例,請瀏覽example目錄。
API
eslint()
沒有明確的配置。可以相對於每個linted文件解析.eslintrc
文件。
eslint(options)
請參閱ESlint CLIEngine選項。
options.rules
類型: Object
默認值:null
一套配置的規則。
{
"rules":{
"camelcase": 1,
"comma-dangle": 2,
"quotes": 0
}
}
options.globals
類型: Array
默認值:[]
指定要聲明的全局變量。
{
"globals":[
"jQuery",
"$"
]
}
options.fix
類型: Boolean
默認值:false
此選項指示ESLint嘗試修復盡可能多的問題。修正被應用到gulp流。固定內容可以使用gulp.dest
保存到文件中(參見example/fix.js)。可修復的規則可以在ESLint的規則列表中找到。
應用修復程序時,在修復文件的ESLint結果中將“fixed
”屬性設置為true
。
options.quiet
類型: Boolean
如果為true
,則此選項將從ESLint結果中過濾警告消息。這模仿了ESLint CLI 安靜選項。
類型: function (message, index, list) { return Boolean(); }
當提供一個函數時,它將用於篩選ESLint結果消息,刪除任何不返回true
(或真實)值的消息。
options.envs
類型:Array
默認值:[]
指定要應用的環境列表。
options.rulePaths
類型: Array
默認值:[]
此選項允許您指定從中加載規則文件的其他目錄。當您有不適合與ESLint捆綁在一起的自定義規則時,這非常有用。此選項的工作方式與ESLint CLI的rulesdir選項非常類似。
options.configFile
類型:String
默認值:null
ESLint規則配置文件的路徑。有關更多信息,請參閱ESLint CLI 配置選項和使用配置文件。
options.warnFileIgnored
類型: Boolean
如果為true
,則在ESLint忽略文件時添加結果警告。這可用於歸檔gulp.src
不必要加載的文件。例如,由於ESLint會自動忽略“node_modules
”文件路徑,而gulp.src
則不會,因此一個gulp任務僅從“node_modules
”目錄讀取文件可能需要幾秒鍾的時間。
options.useEslintrc
類型: Boolean
默認值:true
false
啟用時,ESLint將不加載.eslintrc文件。
eslint(configFilePath)
類型: String
定義的簡寫options.configFile
。
eslint.result(action)
類型: function (result) {}
為每個ESLint文件結果調用一個函數。不需要返回值。如果拋出一個錯誤,它將被包裝在一個Gulp PluginError
中並從流中發出。
gulp.src(['**/*.js','!node_modules/**'])
.pipe(eslint())
.pipe(eslint.result(result => {
// 為每個ESLint結果調用。
console.log(`ESLint result: ${result.filePath}`);
console.log(`# Messages: ${result.messages.length}`);
console.log(`# Warnings: ${result.warningCount}`);
console.log(`# Errors: ${result.errorCount}`);
}));
類型: function (result, callback) { callback(error); }
為每個ESLint文件結果調用異步函數。必須調用回調才能完成流。如果一個值被傳遞給回調,它將被包裝在一個Gulp PluginError
中並從流中發出。
eslint.results(action)
類型: function (results) {}
在流完成之前,對所有ESLint文件結果調用一次函數。不需要返回值。如果拋出一個錯誤,它將被包裝在一個Gulp PluginError中並從流中發出。
結果列表有一個“warningCount”屬性,它是所有結果中警告的總和;同樣,“errorCount”屬性設置為所有結果中錯誤的總和。
gulp.src(['**/*.js','!node_modules/**'])
.pipe(eslint())
.pipe(eslint.results(results => {
// 調用一次對所有ESLint結果。
console.log(`Total Results: ${results.length}`);
console.log(`Total Warnings: ${results.warningCount}`);
console.log(`Total Errors: ${results.errorCount}`);
}));
類型: function (results, callback) { callback(error); }
在流完成之前,對所有ESLint文件結果調用一次異步函數。必須調用回調才能完成流。如果一個值被傳遞給回調,它將被包裝在一個Gulp PluginError中並從流中發出。
eslint.failOnError()
如果已報告任何文件的ESLint錯誤,請停止任務/流。
// 在將無效的JS文件復制到輸出目錄之前,導致流停止(/fail)
gulp.src(['**/*.js','!node_modules/**'])
.pipe(eslint())
.pipe(eslint.failOnError());
eslint.failAfterError()
如果已報告任何文件的ESLint錯誤,請停止任務/流,但請先處理所有文件。
// 如果發生任何ESLint錯誤,請在流結束時使流停止(/fail)。
gulp.src(['**/*.js','!node_modules/**'])
.pipe(eslint())
.pipe(eslint.failAfterError());
eslint.format(formatter, output)
格式化所有文件一次。這應該在通過eslint
進行管道傳輸后在流中使用;否則,將找不到要格式化的eslint結果。
formatter
參數可以是String
、Function
或undefined
。作為String
,具有該名稱或路徑的格式化程序模塊將被解析為相對於process.cwd()
的模塊,或作為ESLint提供的格式化程序之一的模塊。如果undefined
,則將解析ESLint“stylish
”格式化程序。將調用一個Function
,其中包含要格式化的文件linting結果數組(Array
)。
// 使用默認的“`stylish`”ESLint格式化程序
eslint.format()
// 使用“ checkstyle” ESLint格式化程序
eslint.format('checkstyle')
// 使用“ eslint-path-formatter”模塊格式化程序
// (@see https://github.com/Bartvds/eslint-path-formatter)
eslint.format('node_modules/eslint-path-formatter')
output
參數可以是一個WritableStream
,Function
或undefined
。作為WritableStream
,格式化程序結果將寫入流。如果undefined
,格式化程序結果將寫入gulp的log。Function
將使用格式化程序結果作為唯一參數來調用。
// 寫入gulp的日志(默認)
eslint.format();
// 向stdout寫入消息
eslint.format('junit', process.stdout)
eslint.formatEach(formatter, output)
分別格式化每個文件。這應該在通過eslint進行管道傳輸后在流中使用;否則,將找不到要格式化的eslint結果。
formatEach
的參數與的參數相同format
。
Configuration(配置)
ESLint可以使用以下任何插件選項進行顯式配置:config
、rules
、globals
或env
。如果useEslintrc選項未設置為false
,則ESLint將嘗試在要linted的文件所在的目錄中解析名為.eslintrc
的文件。如果在那里找不到,將搜索父目錄,直到找到.eslintrc
或到達目錄根目錄。
Ignore Files(忽略文件)
ESLint將忽略在linting點沒有.js
文件擴展名的文件(有些插件可能會在流中更改文件擴展名)。這樣可以避免無意中對非JavaScript文件進行linting操作。
ESLint還將在cwd或父目錄中檢測到.eslintignore
文件。請參閱ESLint文檔以了解如何構造此文件。
Extensions (擴展名)
ESLint結果作為“ESLint”屬性附加到通過Gulp.js流管道的乙烯基文件。這可用於跟隨初始eslint
流的流。eslint.result和eslint.results方法可用於支持對eslint
結果的擴展和自定義處理。