技术备忘录
收纳常用命令、代码片段、配置方法和排错记录,共 3 条;代码块右上角可一键复制。
没有匹配的备忘 —— 换个关键词试试。
📌 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 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)
写法
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属性直接读,不用自己解析。