You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell新手求助:如何在package.json第1行前插入指定scripts代码?

在package.json首行前插入scripts代码的sed解决方案

问题需求

需要在package.json文件的第1行之前插入以下代码片段:

"scripts": {
  "dev": "yarn tailwindcss -i ./src/input.css -o ./src/output.css --watch"
},

尝试的sed命令未生效:

$ sed -i "1 i\
"scripts": {
  "dev": "yarn tailwindcss -i ./src/input.css -o ./src/output.css --watch"
}," package.json

失败原因

  1. 引号冲突:用双引号包裹sed脚本时,内部的双引号未转义,shell会将其解析为命令的边界,导致sed脚本被拆分,无法正确识别完整插入内容。
  2. 多行格式错误:sed插入多行内容时,每行结尾需要加反斜杠\标记续行,原命令未添加,导致sed仅处理了第一行内容。

可行解决方案

方案一:转义引号并添加续行标记

使用单引号包裹sed脚本(避免shell解析内部双引号),同时在每行结尾添加反斜杠:

sed -i '1 i\
"scripts": {\
  "dev": "yarn tailwindcss -i ./src/input.css -o ./src/output.css --watch"\
},' package.json

方案二:使用Here-doc(更易读)

通过0r命令在文件开头(行号0,位于首行之前)读取标准输入内容插入,Here-doc里的内容可原样保留:

sed -i '0r /dev/stdin' package.json << 'EOF'
"scripts": {
  "dev": "yarn tailwindcss -i ./src/input.css -o ./src/output.css --watch"
},
EOF

注:如果是macOS系统,sed -i需要加空参数(sed -i '' '...'),否则会自动生成备份文件。

内容的提问来源于stack exchange,提问作者codewithjom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:25:09