我有这个命令打印出一个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中使用替换而不保存参数的输出,以允许运行时处理替换的新值?
答案 0 :(得分:-1)
一个小脚本将确保您的所有工作都在同一个过程中完成:
#!/bin/bash
WD=`pwd`
PACKAGE=@reggi/`basename "$WD"`
json -I -f package.json -e "this.name=\"$PACKAGE\""
确保它是可执行的并且在你的路径上,然后
lerna exec rename.sh