Node.js写入package.json时如何消除文件尾无换行的差异
解决Node.js preinstall脚本写入package.json时的末尾换行差异问题
这个问题很常见——JSON.stringify生成的JSON字符串默认不会在末尾添加换行符,而你的原始package.json(或者Git的默认检查规则)期望文件末尾有一个换行,所以才会出现这个diff。
要消除这个差异,只需要在写入文件前,给生成的JSON字符串手动加上一个换行符\n就行。修改你的preinstall.js代码如下:
const pkg = require('./package.json'); const fs = require('fs'); pkg.dependencies['new-package'] = 'latest'; // 在JSON字符串末尾添加换行符,匹配大多数文件的格式规范 const updatedPackageContent = JSON.stringify(pkg, null, 2) + '\n'; fs.writeFileSync('./package.json', updatedPackageContent);
这样写入后的package.json末尾就会有一个正常的换行符,那个恼人的diff就消失了。本质上就是让生成的文件内容符合常见的文本文件格式约定——几乎所有的代码编辑器和版本控制系统都默认期望文件末尾有一个单独的换行。
内容的提问来源于stack exchange,提问作者codeofnode
相关产品推荐
相关产品推荐

