2017-07-12 53 views
2

這是很奇怪的,我有我的package.json以下腳本:NPM運行「腳本」沒有做任何事情

"scripts": { 
    "lint": "./node_modules/tslint/bin/tslint src/js/**/*", 
    "lint:fix": "./node_modules/tslint/bin/tslint src/js/**/* --fix" 
}, 

當我運行npm run lint我沒有得到任何錯誤和運行echo $?之後立即顯示0

但是,如果我運行tslint src/js/**/*我確實發生了linting錯誤。

怎麼回事?

回答

1

在使用globbing引起的npm中有很多衆所周知的問題。它們中的許多僅僅影響Windows,而另一些僅「特定於」外殼。

請嘗試以下操作。

"scripts": { 
    "lint": "./node_modules/tslint/bin/tslint \"src/**/*.ts\"", 
}, 

如果沒有立即使你相信電腦一直在爲人類災難,爲什麼會發生在夢幻般的The Linux Programming Interface,其中涵蓋了數量驚人的非這些問題,你可以瞭解更多有關像這樣的Linux便攜性問題。

+0

不錯,工作,'--project'不能被'\「src/**/*。ts \」'識別!謝謝 – Kousha

0

使用npm run lint默認爲您本地項目目錄的node_modules中的tslint,而使用tslint src/js/**/*默認爲全局中的那個,您應該檢查是否存在版本不匹配這可能導致規則的差異

+0

ya我更新了我的示例,我將腳本更改爲'./ node_modules/tslint/bin/tslint',但仍然是相同的結果 – Kousha

+0

僅僅因爲我偏執狂,我做了'./node_modules/tslint/bin/ tslint -v'和'tslint -v',兩者都打印相同的版本 – Kousha

+0

奇怪,不知道這是否會有所幫助,但似乎其他人都有同樣的問題? https://github.com/palantir/tslint/issues/2357 – ArcQ

0

使用npm-run-scripts您可以省略./node_modules/.bin,因爲npm將首先在那裏查找。