-2

我有这个命令可以打印出 lerna 项目中所有包的所有文件夹名称。

lerna exec -- node -e 'console.log(path.basename(process.cwd()))'

我有这个命令应该用文件夹的名称替换 package.json 中每个 lerna 包的名称。它使用替换。

lerna exec -- json -I -f ./package.json -e 'this.name = "@reggi/'`node -e 'console.log(path.basename(__dirname))'`'"'

问题是它将包命名为包含整个 lerna 包的文件夹的名称。

这做同样的事情。它一遍又一遍地记录父 lerna 包的名称。

lerna exec -- echo `node -e 'console.log(path.basename(process.cwd()))'`

Bash 替换不允许右侧的命令exec在它自己的进程中运行,它在有机会运行它之前进行编译。

如何在 bash 中使用替换而不保存参数的输出,以允许运行时处理替换的新值?

4

1 回答 1

-1

一个小脚本将确保您的所有工作都在同一个过程中完成:

#!/bin/bash
WD=`pwd`
PACKAGE=@reggi/`basename "$WD"`
json -I -f package.json -e "this.name=\"$PACKAGE\""

确保它是可执行的并且在你的路径上,然后

lerna exec rename.sh
于 2017-01-16T03:36:14.840 回答