在lerna exec内的Bash替换不起作用

时间:2017-01-16 00:07:55

标签: node.js bash shell unix lerna

我有这个命令打印出一个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右侧的命令在其自己的进程中运行,它在编译之前有机会运行它。< / p>

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

1 个答案:

答案 0 :(得分:-1)

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

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

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

lerna exec rename.sh