需要节点模块时,强制区分大小写的string匹配

我注意到,我的一些推到heroku失败,因为在我的package.json中的依赖关系的大小写不匹配与我实际需要在JavaScript中。 例如,在package.json中,我可能会有一些名为“somepackage”的东西,但是在我的JavaScript文件中我require("somePackage") 。 本地,这工作正常,但在Heroku它失败。 是否有一个节点设置强制区分大小写,以便它可以在本地失败?

请参阅github上的讨论https://github.com/npm/npm/issues/3914

npm包的首选命名约定是“全小写”。 你可能应该在你的代码中进行必要的修改来遵循这个约定。

混合案例带来了跨平台的问题,主要是因为Linux有一个区分大小写的文件系统,而Windows和MacOS默认情况下是不区分大小写的文件系统。

“全小写”惯例是为了避免像你所描述的那样的意外。

如果您正在使用Mac OS X,则可以通过查看https://apple.stackexchange.com/questions/22297/is-bash-in-osx-case-insensitive上的第一个答案来检查您的文件系统是如何configuration的

我编写了一个NPM模块来执行此操作,并检查以确保代码中引用的所有依赖项都反映在您的package.json文件中:

的NodeJS-DEP检查

https://www.npmjs.com/package/nodejs-dep-check

目的当然是为了节省时间,以便在事先没有testing/检查的情况下,不要初始化构build或遇到运行时错误。