如何将 json 重写到文件中,以免在生成的 npm package.json 中出现“\ 文件末尾没有换行符”差异

How to re-write json to a file so as not to get "\ No newline at end of file" diff against npm generated package.json

我有一个 nodejs 项目。 我在 package.json

中几乎没有依赖项

在 "scripts" 部分我添加了 "preinstall":"node preinstall"

preinstall 脚本在运行时生成依赖关系并更新 package.json,以便实际 npm install 调用可用。

preinstall.js是这样的

const pkg = require('./package.json')
pkg.dependencies['new-package'] = 'latest';
require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2))

我在 package.json

中得到了一个额外的差异,如下所示
-}
\ No newline at end of file
+}

如何摆脱这个?在我编写 json 文件后,我不想要这个差异。

@RobC 已经在评论中提到了,只是把它放在一个实际的答案中:

问题是 JSON.stringify 正确地在每一行添加了换行符,但是在最后一行插入换行符失败。写入文件时会导致格式错误的文本文件(产生 No newline at end of file 警告等)。

无论如何,解决方案是通过替换

手动添加缺失的换行符
JSON.stringify(pkg, null, 2)

JSON.stringify(pkg, null, 2).concat('\n')