如何将 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')
我有一个 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')