技术备忘录

收纳常用命令、代码片段、配置方法和排错记录,共 3 条;代码块右上角可一键复制。

📌 Git Bash 查看中文文件内容乱码

#Windows#Git Bash#排错 #

现象

cat 任何含中文的 UTF-8 文件(如 dist/rss.xml),控制台输出全部变成 鎷鹃棿 这类乱码。第一反应容易以为是文件编码坏了。

原因

文件是正常的 UTF-8;是 Git Bash 控制台按 GBK 解码显示。显示乱 ≠ 内容坏。

解法

需要确认内容正确性时,不要用肉眼读控制台,改用脚本断言:

node -e "
const fs = require('fs');
const d = fs.readFileSync('dist/index.html', 'utf8');
console.log(d.includes('关键词') ? 'PASS' : 'FAIL');
"

只输出 PASS / FAIL 这类 ASCII 结果,绕开控制台编码问题。

📌 npm 国内镜像源配置

#npm#配置 #

查看当前源

npm config get registry

切到国内镜像

npm config set registry https://registry.npmmirror.com

切回官方源:

npm config set registry https://registry.npmjs.org

package-lock.json 里会记录 resolved 地址,团队协作时注意保持一致。

Astro 代码块带文件名(Shiki transformer)

#Astro#代码高亮 #

写法

Markdown 围栏语言后面跟 title:

```js title="reading-time.js"
export function minutes(body) { /* ... */ }
```

提取 meta 的正确姿势

在 astro.config.mjs 的 shikiConfig.transformers 里挂到 <pre> 上:

{
  name: 'code-meta',
  pre(node) {
    const raw = this.options.meta?.__raw;
    if (raw) node.properties['data-meta'] = String(raw);
  },
}

踩过的坑

  • 用 remark 插件往 node.data.hProperties 写属性无效——Astro 的 Shiki 渲染会重新生成 <pre>,自定义属性被丢弃;必须走 transformer。
  • 语言名可以从 Shiki 输出的 data-language 属性直接读,不用自己解析。