有没有一种正确的方法可以将非伞式项目更改为在 Phoenix 框架中使用伞式功能?
Is there a right way to change a non umbrella project to use umbrella feature with Phoenix framework?
现在正在使用 Phoenix 框架。一开始,我们没有使用 --umbrella
选项来生成项目。所以结构就像一个简单的伞式应用程序。
现在想把项目改成umbrella
方式。可以吗,怎么办?
从 phoenix 1.3 和 elixir 1.5 开始:
在单独的目录中生成一个新的保护伞应用程序:
$ mix new my_umbrella --umbrella
将您的 phoenix 应用程序移动到新伞目录中的 apps/
目录:
$ mv /path/to/my_app /path/to/my_umbrella/apps/
您的构建路径、deps 文件夹以及主要配置和混合文件现在位于伞的根目录中。您需要将以下几行添加到您的凤凰 mix.exs
中的 project
函数以指向正确的位置,如下所示:
# my_umbrella/apps/my_app/mix.exs
def project do
[
# ...
build_path: "../../_build",
config_path: "../../config/config.exs",
deps_path: "../../deps",
lockfile: "../../mix.lock",
# ...
]
end
从伞的根重新获取您的依赖项。
$ mix deps.get
假设您使用的是 b运行ch,您还需要编辑 phoenix 应用程序文件夹中的 assets/package.json
文件以指向 deps/
的正确位置:
// my_umbrella/apps/my_app/assets/package.json
"phoenix": "file:../../../deps/phoenix",
"phoenix_html": "file:../../../deps/phoenix_html"
如果使用 npm
.
的最新版本,您可能需要刷新 package-lock.json
文件以重新执行 运行 npm install
命令
从 umbrella 的根目录,你应该可以启动你的 phoenix 服务器。
$ mix phx.server
现在正在使用 Phoenix 框架。一开始,我们没有使用 --umbrella
选项来生成项目。所以结构就像一个简单的伞式应用程序。
现在想把项目改成umbrella
方式。可以吗,怎么办?
从 phoenix 1.3 和 elixir 1.5 开始:
在单独的目录中生成一个新的保护伞应用程序:
$ mix new my_umbrella --umbrella
将您的 phoenix 应用程序移动到新伞目录中的 apps/
目录:
$ mv /path/to/my_app /path/to/my_umbrella/apps/
您的构建路径、deps 文件夹以及主要配置和混合文件现在位于伞的根目录中。您需要将以下几行添加到您的凤凰 mix.exs
中的 project
函数以指向正确的位置,如下所示:
# my_umbrella/apps/my_app/mix.exs
def project do
[
# ...
build_path: "../../_build",
config_path: "../../config/config.exs",
deps_path: "../../deps",
lockfile: "../../mix.lock",
# ...
]
end
从伞的根重新获取您的依赖项。
$ mix deps.get
假设您使用的是 b运行ch,您还需要编辑 phoenix 应用程序文件夹中的 assets/package.json
文件以指向 deps/
的正确位置:
// my_umbrella/apps/my_app/assets/package.json
"phoenix": "file:../../../deps/phoenix",
"phoenix_html": "file:../../../deps/phoenix_html"
如果使用 npm
.
package-lock.json
文件以重新执行 运行 npm install
命令
从 umbrella 的根目录,你应该可以启动你的 phoenix 服务器。
$ mix phx.server