【发布时间】:2019-08-08 13:22:28
【问题描述】:
这是一个小 lerna 项目,带有一个实现简单 cli 工具的子包
├── node_modules/...
├── package.json
└── packages/cli
├── lib
│ ├── cli.sh
│ └── other.sh
└── package.json
工具在packages/cli/lib/cli.sh:
echo "Hi..."
./other.sh
# also tried other.sh
调用packages/cli/lib/other.sh
echo "...there"
子包 (packages/cli/package.json) 有 bin commadn "doit"
{
"name": "@me/cli",
"bin": {
"doit": "./lib/cli.sh",
}
}
而根package.json依赖于cli子包
{
"name": "@me/root",
"dependencies": {
"@me/cli": "1.0.0",
}
}
但是当我使用 bin 命令时,它从 .bin (Symlink) 文件夹运行
$ doit
Hi...
<projectDir>/node_modules/.bin/doit: line 1: ./other.sh: No such file or directory
如何让 shellscript 在通过符号链接调用时找到它的兄弟文件? (以对 CI 来说足够健壮的方式)
【问题讨论】: