npm运行“脚本”不做任何事情

这真的很奇怪,我在我的package.json中有以下脚本:

"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错误。

怎么来的?

由于使用globbing, npm有很多众所周知的问题。 它们中的许多仅仅影响Windows,而另一些则“仅仅”是特定于shell的。

尝试以下。

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

如果这并没有立即说服你,计算机已经成为人类的灾难,你可以更多地了解为什么这些问题出现在梦幻般的Linux编程接口中 ,这个接口包含了非常多的非Linux可移植性问题,比如这个。

使用npm run lint默认为本地项目目录的node_modules中的tslint,而使用tslint src / js / ** / *默认为全局中的那个,则应检查是否存在可能导致差异的版本不匹配在规则

使用npm-run-scripts你可以省略./node_modules/.bin因为npm将首先在那里查找。