2017-09-17 14 views
1

私は、index.htmlというテンプレートを提供しているFlaskアプリケーションを持っています。このテンプレートはwebpackによって生成されたjavascriptファイルにアクセスします。問題は、Webpackが生成したファイルのハッシュを生成してブラウザがキャッシュされないようにすることです。ハッシュ名が変更される可能性があるため、webpack生成ファイルにアクセスする方法を理解できません。たとえば、webpackがbundle-cdcf74127a4e321fbcf0.jsというファイルを生成した場合、事前にハッシュ関数cdcf74127a4e321fbcf0を知らないので、index.htmlにアクセスできませんでした。index.htmlからwebpack生成jsファイルにアクセスする方法

ここに私のWebPACKの設定ファイルされる:アスタリスク検索はファイルでは動作しません表示されるよう

const CleanWebpackPlugin = require('clean-webpack-plugin'); 

module.exports = { 
    entry: "./js/main.js", 
    output: { 
     filename: "static/bundle-[hash].js", 
    }, 
    resolveLoader: { 
    moduleExtensions: ['-loader'] 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.jsx?$/, 
       exclude: /(node_modules|bower_components)/, 
       loader: 'babel', 
       query: { 
        presets: ['react', 'es2015', 'stage-0'] 
       } 
      }, 
      { 
       test: /\.css$/, 
       loader: 'style-loader', 
      }, 
      { 
       test: /\.css$/, 
       loader: 'css-loader', 
       query: { 
        modules: true, 
        localIdentName: '[name]__[local]___[hash:base64:5]' 
       } 
      } 
     ] 
    }, 
    plugins: [new CleanWebpackPlugin(['static/bundle*.js'])] 
}; 

index.htmlでWebPACKの生成されたファイルを呼び出すために使用されるコードは、(このコードは動作しません以下の通りです)ここに名前:

<body> 
    <div id="app"></div> 
    <script src="bundle*.js"></script> 
</body> 

フラスコアプリのコードは次のように書きます:

app = Flask(__name__, static_url_path='') 
@app.route('/') 
def default(): 
    return render_template('index.html') 

このコードを修正してwebpackで生成されたファイルを提供するにはどうすればよいですか?

答えて

1

webpackプラグインhtmlWebpackPluginを使用する必要があります(https://github.com/jantimon/html-webpack-plugin#configurationを参照)。

あなたはWebPACKのによって生成されたJSファイルを挿入するには、このプラグインのHTMLテンプレートを提供することができ、これらの構成オプションに細心の注意を払う:templateinjectchunks、「ハッシュ」。

+0

コードを入力してください。ありがとう。 – Alex

+1

@Alex私のプロジェクトで使用されているコードを更新します。 – JiangangXiong

+0

ありがとうございます。このパッケージによって行われたHTML注入は、webpackに継続的にリフレッシュして新しいファイルを生成させているようです。これを止める方法を知っていますか? – Alex

関連する問題