【问题标题】:vscode package.json String does not match the patternvscode package.json 字符串与模式不匹配
【发布时间】:2018-07-19 13:46:09
【问题描述】:

我正在一个使用 npm 的现有项目上试用 VSCode,该项目有一个 package.json 文件,该文件具有相应的“name:”键,读取“SpecPro-File-Management-UI”。 VSCode 以“字符串与模式不匹配...”反对这一行,显然是因为名称中的大写字符。

此问题在已关闭的VSCode issue 中有所描述。这给我的 package.json 文件留下了advice to setup a custom schema。这是非常不友好的,也是采用 VSCode 的障碍。我不想把时间花在自定义模式上。我不想重命名我的项目。我只想编辑我的代码并利用许多 VSCode 好东西,而不会分散错误消息的注意力。

考虑到在 npm 包中使用大写字符是一种非常普遍的做法, VSCode 应该采用更友好的架构或覆盖标准架构的简单方法似乎是最合理的。据我所知,我必须制作自己的个人模式来解决这个问题。对于这样一个简单的问题,需要大量的工作和未来的维护。

有没有简单的方法来消除这个错误的错误信息?

【问题讨论】:

  • 你的名字违反了该字段的 NPM 规则。 docs.npmjs.com/files/package.json。全部小写,否则你会遇到其他问题。
  • 这是相当严格的。我在该参考中给出的原因不适用的情况下使用 npm 和相关技术。我在所有其他组件都使用大写名称的现有项目的上下文中创建此代码。一切正常,但这条 VSCode 消息是不必要且烦人的。
  • 我同意这个限制很烦人,但你迟早会遇到其他工具(NPM/JSPM/Yarn/Bower/random devDependencies)的问题。只需遵循约定,因为在这种情况下它不会受到伤害。
  • 由于我没有使用大多数这些工具,因此这些潜在问题不适用。所以这个 VSCode 警告消息是我想要抑制的刺激。我不想为了取悦 VSCode 而违背现有代码已有几十年的惯例。总的来说,我真的很喜欢 VSCode。但是这个问题肯定是负面的。
  • VS Code 行为正确。为什么它应该容忍无效的清单?请注意,即使在本地使用 npm link 或者如果您有私有 NPM 注册表和包服务器,您也可能会遇到问题。 NPM 有一个注册表,你在浪费时间试图维护一个无关紧要的约定。

标签: json node.js visual-studio-code package.json


【解决方案1】:

在 tsconfig.json 中添加此行或将其值设置为 false。 这对我有用。

"forceConsistentCasingInFileNames": false, // Fix for name regex pattern

【讨论】:

    【解决方案2】:

    使用用连字符分隔的小写 (-) 中的名称字段值。

    【讨论】:

    • 它对我不起作用。我尝试删除“名称”道具,然后它起作用了。
    • 您能否提供您正在使用的名称值?
    【解决方案3】:

    此行为旨在强制 package.json 文件的 NPM 约定(解释为“仅小写”)。我同意这是一个麻烦,特别是因为项目名称通常是预先填写的,例如通过“创建反应应用程序”。正如您所指出的,可以创建一个自定义模式来忽略这一点,但实际上不建议这样做。目前没有任何替代方案。我自己,我只是将值更改为小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多