重命名Phoenix项目(其他Elixir项目同理)

作者 developerworks 所属板块 学习资料
[https://elixirforum.com/t/how-to-change-a-phoenix-project-name-smoothly/1217](https://elixirforum.com/t/how-to-change-a-phoenix-project-name-smoothly/1217) 创建一个临时目录用于测试 ``` mkdir ./tmp cd ./tmp ``` 创建SHELL脚本 `rename.sh`, 把这个脚本放到 `./tmp` 目录下 ``` #!/bin/bash set -e CURRENT_NAME="Test1" CURRENT_OTP="test1" NEW_NAME="Test2" NEW_OTP="test2" ack -l $CURRENT_NAME | xargs sed -i '' -e "s/$CURRENT_NAME/$NEW_NAME/g" ack -l $CURRENT_OTP | xargs sed -i '' -e "s/$CURRENT_OTP/$NEW_OTP/g" mv lib/$CURRENT_OTP lib/$NEW_OTP mv lib/$CURRENT_OTP.ex lib/$NEW_OTP.ex mv ../$CURRENT_OTP ../$NEW_OTP ``` 增加执行权限 ``` chmod +x rename.sh ``` 创建一个 Elixir 项目 ``` mix phoenix.new test1 --no-brunch ``` 复制SHELL脚本 ``` cp rename.sh ./test1 ``` 执行 ``` cd ./test1 ./rename.sh ``` 测试是否能成功编译 ``` cd test1 mix deps.get mix compile ``` ## 问题 cd 到 `./tmp/test1` 目录下执行 `./rename.sh` 会修改 `rename.sh` 本身. 因此我是复制上层目录的 rename.sh 到项目目录 `./test1` 当中, 用完删除 `./test2/rename.sh` 即可.
1 回复
  • bareilles 发表
    谢谢[@developerworks](/users/38) 大神。我觉得可以在Phoenix里交个PR来一个指令换成这些东西了,这样就方便多了。