19

当您安装 npm 包并使用--save--save-dev--save-optional选项将包写入您的 package.json 文件中的相应依赖项属性时,整个文件似乎被重写为 2 空格缩进:

$ cat package.json
{
    "name": "my-package"
}

$ npm install --save another-package && cat package.json
{
  "name": "my-package",
  "dependencies": {
    "another-package": "~0.1.5"
  }
}

有没有办法让 npm 遵循现有格式,或者为 package.json 文件指定自定义格式(例如 4 空格缩进)?

我在npm 选项文档中找不到任何内容。

4

2 回答 2

16

在挖掘npm 源代码后,不幸的是,我的问题的答案似乎绝对是“否”。当npm install使用“保存”选项之一执行时,会发生以下情况

fs.readFile(saveTarget, function (er, data) {
  try {
    data = JSON.parse(data.toString("utf8"))
  } catch (ex) {
    er = ex
  }
  // ...
  data = JSON.stringify(data, null, 2) + "\n"
  fs.writeFile(saveTarget, data, function (er) {
    cb(er, installed, tree, pretty)
  })
})

重要的线路是对 的调用JSON.stringify。使用第三个参数调用stringify时,返回的字符串缩进格式化为指定数量的空格。

由于无法在内部自定义 npm 使用的值,因此此行为当前不可配置。

于 2013-09-02T11:55:50.213 回答
2

已在64b67f0和 npm 5 中修复...

https://github.com/npm/npm/issues/4718#issuecomment-307142397

在此处输入图像描述

于 2020-02-23T04:39:40.280 回答