2015-01-26 38 views
6

我試圖使用NPM作爲一個任務運行/看完這篇文章後構建工具的問題:使用NPM作爲一個任務運行/構建工具 - 有一些CLI模塊

How to use npm as a build tool

而我我取得了一些成功,我陷入了一件事。當運行像的JSLint,JSHINT,或ESLINT一個命令行的全球工具,故宮將始終顯示在控制檯窗口中的1號出口代碼:

enter image description here

正如你所看到的,命令工作正常,但NPM將其視爲錯誤並顯示錯誤日誌信息。這是正常的和/或有辦法關閉特定的命令?

附加信息:這是腳本塊在我的package.json配置:

「腳本」:{ 「開始」: 「節點./src/server/index.js」, 「測試」: 「」 「皮棉」: 「eslint index.js」 }

然後從NPM CLI I型:

npm run lint 

這將執行與標籤的package.json文件中找到的腳本: 'lint'

+0

這應該是一個偉大的讀取你:http://substack.net/task_automation_with_npm_run – naomik 2015-01-27 00:38:20

回答

2

由於存在驗證錯誤,eslint存在退出代碼1,這使得npm認爲在執行過程中出現錯誤。

如果你使用Linux,你可以使用這一招總是返回退出代碼0:

"scripts": { "start": "node ./src/server/index.js", "test": "", "lint": "eslint index.js; true" } 
+0

我使用cli,以便真正的標誌不起作用的情況下。 – u84six 2015-01-27 00:12:29

+0

對不起,我看到這是一個Linux命令。我的開發環境是Windows,所以我認爲最好使用--silent標誌。看到我的答案。 – u84six 2015-01-27 00:18:29

1

我已經找到一個解決這個問題。在腳本塊中,我使用的測試腳本調用NPM命令皮棉與--silent標誌:

"scripts": { 
"start": "node ./src/server/index.js", 
"test": "npm run-script --silent lint", 
"lint": "eslint index.js"} 

然後在命令行我可以輸入:

npm run test 

現在是工作時不顯示錯誤日誌。

2

NPM腳本被設計爲有意使用這種方式,以便退出代碼1或2(除0以外的任何其他代碼)將阻止後期任務運行,與在操作系統上運行的方式相同。

使用--silent標誌一種選擇,但可以成爲那裏有其他問題劇本的問題,你會風撞你的頭靠在牆上,當你建立開始,沒有任何皮棉/測試錯誤失敗。

這裏要做的最好的事情就是配置您的過程,以便在您不需要的情況下不輸出錯誤退出代碼。在這種情況下......你有一些基於你的eslint配置合法彈出的錯誤。這將導致錯誤退出代碼,並(正確如此)阻止下一個任務運行。當你使用npm腳本時,這實際上是非常有用的,因爲當你知道有錯誤時,你可以防止測試/構建步驟被不必要地運行。

因此,在這種情況下,您想要將.eslintrc文件添加到您的項目中,並指定一些既能處理linting錯誤也能處理npm錯誤的規則。

我已在下面發佈了一個快速示例.eslintrc文件。在命令行上運行eslint時,它會自動檢測任何.eslintrc.eslintignore文件,並遵守其配置。

下面的示例將清理你的linting erros,但請記住,它會更改eslint拾取「觸發器」時將拋出的退出代碼。當我將規則更改爲0時,這意味着它在識別該模式時不會提醒您。

你可以閱讀更多關於利用和configuring rule codes,或...看看我創建了一個種子項目,該項目使用NPM作爲構建工具,包括eslint用法:react-flux-npm-automation

// /path/to/project/.eslintrc 
{ 
    "parser": "babel-eslint", 
    "env":{ 
     "browser":true, 
     "node":true, 
     "es6":true 
    }, 
    "rules": { 
     "strict":0, 
     "quotes":0, 
     "no-unused-vars":0 
    } 
} 
3

我用這個:

"scripts": { 
    "start": "node ./src/server/index.js", 
    "lint": "eslint index.js || exit 0" 
} 

問候!

相關問題