Vscode 自动将 EOL 格式由 LF 变为 CTRL

54 阅读1分钟
  1. 问题描述: 最近在使用 Vscode 的时候,默认将所有的有关 End of Line 的地方都变为了 CTRL 格式,但是每次安装依赖包的时候 package.jsonpnpm-lock.yaml 总是会变为 LF 格式,于是写了个脚本自动执行格式转换。

  2. 相关脚本

在根目录下新建一个文件 fix-eol.js:

import fs from 'fs'
import path from 'path'
import { dirname } from 'path'
import { fileURLToPath } from 'url'

const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

const autoFixEol = (files) => {
  files.forEach(file => {
    if (!fs.existsSync(file)) {
      return
    }
    const filePath = path.join(__dirname, file)
    const content = fs.readFileSync(filePath, 'utf8')
    const newContent = content.replace(/\r?\n/g, '\r\n')

    fs.writeFileSync(filePath, newContent, 'utf8')
  })
}

autoFixEol(['package.json', 'package-lock.json', 'pnpm-lock.yaml', 'yarn.lock'])

在 package.json 中添加如下代码:

"scripts": {
  ...
  "postinstall": "node fix-eol.js"
  ...
}