2016-02-06 14 views
6

私はhtml-webpack-pluginと提供テンプレートでWebpackを使用しています。 私はヘッダにファビコンのリストを追加したい:Webpack html-webpack-pluginテンプレート内のfaviconをロードする

<link rel="apple-touch-icon" sizes="57x57" href="<%= htmlWebpackPlugin.extraFiles.apple-touch-icon-57x57 %>"> 
<link rel="apple-touch-icon" sizes="60x60" href="<%= htmlWebpackPlugin.extraFiles.favicons.fav60%>"> 
<link rel="apple-touch-icon" sizes="72x72" href="<%= htmlWebpackPlugin.extraFiles.favicons.fav72%>"> 
<link rel="apple-touch-icon" sizes="76x76" href="favicons/apple-touch-icon-76x76.png"> 
<link rel="apple-touch-icon" sizes="114x114" href="favicons/apple-touch-icon-114x114.png"> 
<link rel="apple-touch-icon" sizes="120x120" href="favicons/apple-touch-icon-120x120.png"> 
<link rel="apple-touch-icon" sizes="144x144" href="favicons/apple-touch-icon-144x144.png"> 
<link rel="apple-touch-icon" sizes="152x152" href="favicons/apple-touch-icon-152x152.png"> 
<link rel="apple-touch-icon" sizes="180x180" href="favicons/apple-touch-icon-180x180.png"> 
<link rel="icon" type="image/png" href="favicons/favicon-32x32.png" sizes="32x32"> 
<link rel="icon" type="image/png" href="favicons/android-chrome-192x192.png" sizes="192x192"> 
<link rel="icon" type="image/png" href="favicons/favicon-96x96.png" sizes="96x96"> 
<link rel="icon" type="image/png" href="favicons/favicon-16x16.png" sizes="16x16"> 
<link rel="manifest" href="favicons/manifest.json"> 
<link rel="mask-icon" href="favicons/safari-pinned-tab.svg" color="#e53935"> 
<meta name="msapplication-TileColor" content="#da532c"> 
<meta name="msapplication-TileImage" content="favicon/mstile-144x144.png"> 
<meta name="theme-color" content="#e53935"> 

私はとかhtml-webpack-pluginせずに、私のWebPACKのビルドですべてのファビコンを含めることができますどのように?

ドキュメントのようにextraFilesとして追加しようとしましたが、私のビルドフォルダには入りません。

注:最初の3つは私がうまくいかないものを試していたことでした。

+0

まだ答え?私はここで同じ質問があります。 – ttt

+0

である。私はそれをコーディングし、ファイルを手動でコピーすることになりました。 – denislexic

+0

ここで同じ質問 – Matt

答えて

6

まだ多くの試練が... html-webpack-pluginで動作するようにはなっていないが、タイトル、説明、キーワード、およびほぼすべてのヘッダーに関連するすべてのものを手助けする新しいライブラリを見つけたあなたがここでそれを見つけることができますreact-helmet

と呼ば:https://github.com/nfl/react-helmet

基本的にはこれが他の人を助け希望

<Helmet 
    link={[ 
     {"rel": "apple-touch-icon", "href": require('apple-touch-icon-57x57.png'), "sizes": "57x57"} 
    ]} 
/> 

あなたの主成分でこのような何かを追加します。

+1

これを共有してくれてありがとう:) – jebbie

+1

ジェネリックウェブパックの問題に反応するものを使用することは、本当の解決策のようには見えません。 :)最終的にはまったく同じ方法で、私はそれを提案していますが... –

+0

それは良い点です。 – denislexic

5

イメージはWebPackで処理されているため、一致するローダーが存在することを確認する必要があります(file-loaderなど)。

これが機能するには、ファイルを対応する属性に明示的に要求する必要があります。明示的にindex.html内のファイルを要求できるようにするには、index.html 自身のローダーを使用してというJSインライン処理が可能なローダーを使用する必要があります。

これは本当にセットアップに依存します(つまり、html-webpack-ローダーをセットアップしたかどうかは、です)。 FAQを見て、基本を説明してください。

ですから、この沿ってやや持ち、仮定:

//どこかのWebPACKのconfig.jsの中

plugins: [ 

    new HtmlWebpackPlugin({ 
    template: 'index.html', 
    inject: 'head', 
    }) //.. 
] 

あなたはそのようなであなたのindex.html画像必要とすることができます

<link rel="apple-touch-icon" sizes="120x120" href="${require('./favicons/apple-touch-icon-120x120.png')}"> 

これはロードしようとしますapple-touch-icon-120x120.pn

//somewhere in your webpack.config.js 
module: { 
    loaders: [ 
    { 
     test: /\.png$/, 
     loader: 'file?name=assets/icons/[name].[hash].[ext]' 
    }, 

    { 
     test: /\.html$/, 
     loader: 'html', 
     query: { 
     interpolate: 'require' 
     } 
    } //.. 

    ] //.. 
} 

あなたが唯一のない画像に必要な使用する必要があります:WebPACKを経由グラムは、あなたは、HTMLローダーが同様に設定する必要があり、それローダがあることを確認する必要がありますので、 inside <img> - タグは、html-webpack-loaderによって自動的に取得されます。HTMLローダーの

将来のバージョンでこの動作を変更する場合があります - >https://github.com/webpack/html-loader/issues/17

+0

すぐに試してみると、問題にもっと関連性がある(具体的に反応しない)ので、動作すれば回答を更新します。 – denislexic

+0

最近の変更のために、 'href =" <%= require( 'path/to/file.jpg')%> "'( '$ {'の代わりに '<%' 'html-loader'を必要とする細かいw/out。ここの例:https://github.com/jantimon/html-webpack-plugin/tree/master/examples/custom-template – Peleg

関連する問題