これはおそらく初心者の質問ですが、ここまたはangularドキュメント)で答えを見つけることができませんでした。単純なAngularアプリケーション( たとえばangular.ioチュートリアルのヒーローエディター 配布したいまだ知らない Webサーバーで実行されるパス。
言い換えると、生成されたソース(index.htmlとそのangular関連するjsファイル))がanyパスで完全に機能する必要があります(それが理由だと思います)相対パスは...)現在、生成されたソースは、サーバーのルートディレクトリに配置した場合にのみ機能します。
<base href="/">
npmdeployはおそらくindex.htmlで生成されました...私はそれを素朴に変更しようとしました
<base href="./">
私のブラウザが含まれているJSファイルのパスをindex.htmlを基準として解釈するためです。これにより、私のブラウザはJSファイルを正しく検出しますが、angularアプリは機能しなくなります(空白ページ...)。
それを行うための適切な「角度のある方法」は何であるかについてのアイデアはありますか?よろしくお願いします!
私のために働いていて、あまり醜く見えない解決策を見つけました:
ng build --base-href "./"
angular CLIを使用している場合は、:
ng build --base-href /dynamic-base-path/
トリックを行う必要があります。
もあります --deploy-url
オプションも。両方を一緒に使用できますが、目的は異なります。
私が知る限り、すべてのdeploy-url
switchは、ロードされているすべてのアセットにそのURLを追加します。例えば :
ng build --aot --prod --base-href=/myapp/ --deploy-url=http://cdn.example.com/
これを生成します:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DEFENDER</title>
<base href="/myapp/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="http://cdn.example.com/styles.7bb5a49e96a80c1bcc2e.css"></head>
<body>
<rr-root></rr-root>
<script type="text/javascript" src="http://cdn.example.com/runtime.e6ffc49faae27b0b8945.js"></script><script type="text/javascript" src="http://cdn.example.com/polyfills.9a5f6d04e0781d28c53e.js"></script><script type="text/javascript" src="http://cdn.example.com/main.03ca15166b3edeff4ad4.js"></script></body>
</html>
それぞれをいつ使用するかはまだ正確にはわかりませんが、 この男 それらを一緒に使用するとうまくいくことがわかりました:-)
注:アセット(画像など)がどのように処理されるかは正確にはわかりません。これはメインの.jsまたはスタイルファイル専用だと思いますが、現在はテスト目的でこれを行っています。
次のいずれかのアプローチを使用できます。
ドメイン内の非ルートパスにデプロイする場合は、dist /index.htmlの<base href="/">
タグを手動で更新する必要があります。
この場合、<base href="/angular2-test/">
に更新する必要があると思います。
ng build -prod --base-href \"/mysubfolder/\"
は、開発を継続するために、index.htmlのオリジナルを変更せずにサーバーで動作します。ここで結果を見ることができます: http://foobar.cf/calculator