Elixir/Phoenix+Angular로 환경 구축
3258 단어 AngularElixirPhoenixangular-cli
환경
Phoenix 프로젝트 만들기
$ mix phx.new ng_phx --no-brunch --no-html
JS의 빌드 도구인 brunch와 html은 작성하지 않습니다.
Angular-CLI로 프로젝트 만들기
$ cd ng_phx
$ ng new web
Phoenix 프로젝트 안에 angular 프로젝트를 만듭니다.
angular-cli에게 묻는 내용은 기호로.
config/dev.exs 편집
watchers의 장소를 다음과 같이 합니다
config/dev.exs debug_errors: true,
code_reloader: true,
check_origin: false,
- watchers: []
+ watchers: [
+ ng: ["build", "--watch", "--output-path=../priv/static/web", "--base-href=/web/", cd: Path.expand("../web/", __DIR__)]
+ ]
# ## SSL Support
#
빌드의 출력처를 priv/static/web
로 하고 있습니다.ng build
는 빌드하기 전에 빌드 대상 디렉토리를 정리합니다.
서브 디렉토리를 하나 추가하고 있습니다.
또한 그것과 함께 base href 설정도 추가했습니다.
그런 다음 .gitignore
에 /priv/static/web
를 추가합니다.
.gitignore # secrets files as long as you replace their contents by environment
# variables.
/config/*.secret.exs
+
+ # ng build output directory
+/priv/static/web
endpoint 편집
angular는 SPA로 움직이기 때문에 /web/index.html
에 액세스해도 /web/
로 날아 버립니다.
그러므로 /web/
로 액세스하더라도 /web/index.html
로 리디렉션되도록 설정을 추가합니다.
또한 priv/static/web
아래에 정적 파일로 액세스하기 위해
plug, Plug.Static only에 웹 추가
lib/ng_phx_web/endpoint.ex defmodule NgPhxWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :ng_phx
+ def redirect_index(conn = %Plug.Conn{path_info: ["web"]}, _opts) do
+ %Plug.Conn{conn | path_info: ["web", "index.html"]}
+ end
+
+ def redirect_index(conn, _opts) do
+ conn
+ end
+
+ plug :redirect_index
+
socket "/socket", NgPhxWeb.UserSocket
...
# when deploying your static files in production.
plug Plug.Static,
at: "/", from: :ng_phx, gzip: false,
- only: ~w(css fonts images js favicon.ico robots.txt)
+ only: ~w(web css fonts images js favicon.ico robots.txt)
서버 시작
여기까지 설정하면 나머지는 다음 명령을 실행하면 Phoenix에서 angular를 이동할 수 있습니다
$ mix phx.new
ng build
시간이 걸리므로 조금 기다리십시오.
http://localhost:4000/web/
에 액세스하여 angular 로고가 표시되면 성공합니다
같은 도메인에서 시작하기 때문에 CORS 문제 등은 없다고 생각합니다.
다만, ng build 의 생성물을 표시하고 있을 뿐이므로, browser sync 가 없는 것이 조금 힘들군요・・・
(나중에 ng build가 미묘하게 느립니다)
다른 좋은 방법 등 있으면 가르쳐 주시면 기쁩니다!
이번 샘플은 어떻게 올려
htps : // 기주 b. 코 m/타마누기/응 g_phx
Reference
이 문제에 관하여(Elixir/Phoenix+Angular로 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tamanugi/items/d3e00937f1ee0bd49770
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ mix phx.new ng_phx --no-brunch --no-html
$ cd ng_phx
$ ng new web
Phoenix 프로젝트 안에 angular 프로젝트를 만듭니다.
angular-cli에게 묻는 내용은 기호로.
config/dev.exs 편집
watchers의 장소를 다음과 같이 합니다
config/dev.exs debug_errors: true,
code_reloader: true,
check_origin: false,
- watchers: []
+ watchers: [
+ ng: ["build", "--watch", "--output-path=../priv/static/web", "--base-href=/web/", cd: Path.expand("../web/", __DIR__)]
+ ]
# ## SSL Support
#
빌드의 출력처를 priv/static/web
로 하고 있습니다.ng build
는 빌드하기 전에 빌드 대상 디렉토리를 정리합니다.
서브 디렉토리를 하나 추가하고 있습니다.
또한 그것과 함께 base href 설정도 추가했습니다.
그런 다음 .gitignore
에 /priv/static/web
를 추가합니다.
.gitignore # secrets files as long as you replace their contents by environment
# variables.
/config/*.secret.exs
+
+ # ng build output directory
+/priv/static/web
endpoint 편집
angular는 SPA로 움직이기 때문에 /web/index.html
에 액세스해도 /web/
로 날아 버립니다.
그러므로 /web/
로 액세스하더라도 /web/index.html
로 리디렉션되도록 설정을 추가합니다.
또한 priv/static/web
아래에 정적 파일로 액세스하기 위해
plug, Plug.Static only에 웹 추가
lib/ng_phx_web/endpoint.ex defmodule NgPhxWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :ng_phx
+ def redirect_index(conn = %Plug.Conn{path_info: ["web"]}, _opts) do
+ %Plug.Conn{conn | path_info: ["web", "index.html"]}
+ end
+
+ def redirect_index(conn, _opts) do
+ conn
+ end
+
+ plug :redirect_index
+
socket "/socket", NgPhxWeb.UserSocket
...
# when deploying your static files in production.
plug Plug.Static,
at: "/", from: :ng_phx, gzip: false,
- only: ~w(css fonts images js favicon.ico robots.txt)
+ only: ~w(web css fonts images js favicon.ico robots.txt)
서버 시작
여기까지 설정하면 나머지는 다음 명령을 실행하면 Phoenix에서 angular를 이동할 수 있습니다
$ mix phx.new
ng build
시간이 걸리므로 조금 기다리십시오.
http://localhost:4000/web/
에 액세스하여 angular 로고가 표시되면 성공합니다
같은 도메인에서 시작하기 때문에 CORS 문제 등은 없다고 생각합니다.
다만, ng build 의 생성물을 표시하고 있을 뿐이므로, browser sync 가 없는 것이 조금 힘들군요・・・
(나중에 ng build가 미묘하게 느립니다)
다른 좋은 방법 등 있으면 가르쳐 주시면 기쁩니다!
이번 샘플은 어떻게 올려
htps : // 기주 b. 코 m/타마누기/응 g_phx
Reference
이 문제에 관하여(Elixir/Phoenix+Angular로 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tamanugi/items/d3e00937f1ee0bd49770
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
debug_errors: true,
code_reloader: true,
check_origin: false,
- watchers: []
+ watchers: [
+ ng: ["build", "--watch", "--output-path=../priv/static/web", "--base-href=/web/", cd: Path.expand("../web/", __DIR__)]
+ ]
# ## SSL Support
#
# secrets files as long as you replace their contents by environment
# variables.
/config/*.secret.exs
+
+ # ng build output directory
+/priv/static/web
angular는 SPA로 움직이기 때문에
/web/index.html
에 액세스해도 /web/
로 날아 버립니다.그러므로
/web/
로 액세스하더라도 /web/index.html
로 리디렉션되도록 설정을 추가합니다.또한
priv/static/web
아래에 정적 파일로 액세스하기 위해plug, Plug.Static only에 웹 추가
lib/ng_phx_web/endpoint.ex
defmodule NgPhxWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :ng_phx
+ def redirect_index(conn = %Plug.Conn{path_info: ["web"]}, _opts) do
+ %Plug.Conn{conn | path_info: ["web", "index.html"]}
+ end
+
+ def redirect_index(conn, _opts) do
+ conn
+ end
+
+ plug :redirect_index
+
socket "/socket", NgPhxWeb.UserSocket
...
# when deploying your static files in production.
plug Plug.Static,
at: "/", from: :ng_phx, gzip: false,
- only: ~w(css fonts images js favicon.ico robots.txt)
+ only: ~w(web css fonts images js favicon.ico robots.txt)
서버 시작
여기까지 설정하면 나머지는 다음 명령을 실행하면 Phoenix에서 angular를 이동할 수 있습니다
$ mix phx.new
ng build
시간이 걸리므로 조금 기다리십시오.
http://localhost:4000/web/
에 액세스하여 angular 로고가 표시되면 성공합니다
같은 도메인에서 시작하기 때문에 CORS 문제 등은 없다고 생각합니다.
다만, ng build 의 생성물을 표시하고 있을 뿐이므로, browser sync 가 없는 것이 조금 힘들군요・・・
(나중에 ng build가 미묘하게 느립니다)
다른 좋은 방법 등 있으면 가르쳐 주시면 기쁩니다!
이번 샘플은 어떻게 올려
htps : // 기주 b. 코 m/타마누기/응 g_phx
Reference
이 문제에 관하여(Elixir/Phoenix+Angular로 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tamanugi/items/d3e00937f1ee0bd49770
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ mix phx.new
Reference
이 문제에 관하여(Elixir/Phoenix+Angular로 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamanugi/items/d3e00937f1ee0bd49770텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)