用ln -s将公共静态资源目录链接至各项目,需统一存放于独立目录(如~/sharedassets/static/),用绝对路径创建软链并配合脚本批量管理,注意权限、路径有效性及工具配置。
直接用 ln -s 把公共静态资源目录链接进各项目即可,关键是路径写对、结构清晰、切换不重装。
明确共享资源的存放位置
把所有项目共用的静态资源(如 icons、fonts、common.css、vendor JS)统一放在一个独立目录里,比如:
-
~/SharedAssets/static/(推荐,语义清楚,不混入项目代码) - 避免放在某个项目内部,否则迁移或删除项目时容易误删共享内容
- 确保该目录有读取权限,所有项目都能访问
为每个项目创建指向它的软链接
进入具体项目目录,在合适位置(如 public/、src/assets/ 或 static/)执行:
-
ln -sf ~/SharedAssets/static ./static(覆盖已有同名目录) -
ln -sf ~/SharedAssets/static/icons ./src/assets/icons(按需链接子目录) -
-f参数可强制替换已存在的链接或文件,省得先rm
完成后,项目中访问 ./static/logo.png 就等同于读取 ~/SharedAssets/static/logo.png。
配合脚本实现一键切换或批量更新
当新增项目或共享资源升级时,不用一个个手动操作。写个简单脚本:
- 新建
link-static.sh放在~/SharedAssets/下 - 内容示例:
#!/bin/zsh
for proj in ~/Projects/{blog,admin,api-frontend}; do
[ -d "$proj" ] && ln -sf ~/SharedAssets/static "$proj/public/static"
done
echo "✅ 静态资源链接已同步" - 运行
chmod +x link-static.sh && ./link-static.sh即可批量生效
注意事项和常见问题
软链本身不占空间,但要注意几处细节:
- 路径必须用绝对路径(如
~/SharedAssets/static)或相对于链接文件位置的相对路径;避免用../嵌套过深,易出错 - 如果原资源被移动或删除,链接会失效(显示为红底白字),用
ls -l可一眼识别 - Web 服务(如 Vite、Webpack Dev Server)默认支持软链,但某些 CLI 工具需开启
followSymlinks: true才能热更新识别 - 不要对正在被进程占用的文件建软链,可能导致读写异常











