我可以按照某种package.json格式进行npm安装吗?

Jam*_*ice 14 node.js npm

当您安装的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"
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以使npm遵循现有格式,或者为package.json文件指定自定义格式(例如4空格缩进)?

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

Jam*_*ice 12

在挖掘了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)
  })
})
Run Code Online (Sandbox Code Playgroud)

重要的是呼唤JSON.stringify.stringify使用第三个参数调用时,返回的字符串缩进将使用指定的空格数进行格式化.

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

  • 不过,Npm接受拉取请求.能够为编写`package.json`的所有npm命令插入格式化器会很棒,所以我们可以选择`require('format-json').diffy`而不是当前的硬编码的字符串. (5认同)