2017-04-08 17 views
2

私の問題は、http://localhost:8080/webpack-dev-server/に行くとwebpackがディレクトリリストを提供できるということです。 devサーバーのパスを変更すると、バンドルに変更は加えられません。Webpack dev-server - 更新されたアセットで静的ファイルを提供する方法?

私は非常に簡単なセットアップが欲しいです。アプリケーション内のすべてを取り出し、js変換を実行してからdistで配信します。 index.htmlはどのようにそれに当てはまりますか?

私は、以下のディレクトリ構造を持っている:私はすべて変換した後、「index.jsでバンドルを開始するとして解釈

const path = require('path') 

module.exports = { 
    entry: './app/index.js', 
    output: { 
     filename: 'bundle.js', 
     path: path.resolve(__dirname, 'dist'), 
     publicPath: '.', 
    }, 
    module: { 
     rules: [ 
      { 
       test: /\.js$/, 
       use: 'babel-loader', 
       exclude: /(node_modules)/, 
      } 
     ] 
    }, 
    devServer: { 
     contentBase: path.join(__dirname, 'dist'), 
     compress: true, 
    } 
} 

app 
    index.js 
dist 
    bundle.js 
index.html 
webpack.config.js 

をそしてwebpack.configの内側に私はこれを持っていますjsファイルをbundle.jsというファイルに入れて、dist/に入れてください。そして、devサーバでそのdistフォルダのjsコンテンツを配信し、圧縮してください。

私が持っている切断は、これにどのようにしてindex.htmlがプレイされているかを理解しています。 私は相談しました:https://webpack.js.org/configuration/dev-server/#devserver

のパスを.に変更すると、ディレクトリ一覧は表示されませんが、バンドルは更新されません。

tldr:

がどのように私はindex.htmlを指しますが、更新の資産を提供するためのdevのサーバーを有効にすることができますか?

最後に、考え出しました。

const path = require('path') 

module.exports = { 
    entry: './app/index.js', 
    output: { 
     filename: 'bundle.js', 
     path: path.resolve(__dirname, 'dist'), 
    }, 
    module: { 
     rules: [ 
      { 
       test: /\.js$/, 
       use: 'babel-loader', 
       exclude: /(node_modules)/, 
      } 
     ] 
    }, 
    devServer: { 
     contentBase: 'dist', 
    } 
} 

私は気になっていたと言いたいと思いますが、それが機能するまでオプションをスパムしました。

答えて

2

contentBase./distの場合、そのディレクトリにはindex.htmlが存在すると予想されます。基本的にwebpack-dev-serverが静的​​ファイル(HTML、画像など)を探すディレクトリです。

バンドルに使用しているものと必ずしも同じである必要はありません。 output.pathは(AFAIK)はwebpack-dev-serverでさえ使用されていません。これはメモリからバンドルを構築して提供するためです。必要なのはoutput.filenameoutput.publicPathです(私はWebpack v2でもオプションですが、パブリックパス自体を試してみると信じていますが)URLを使ってバンドルを要求することができます。

+0

それは今意味がある。ありがとう!私の新しい問題は、devサーバーにバンドルを更新させることができないということです。 – user3162553

+0

これはちょっと変わったことです。私はプロジェクトに非常に似た設定をしていて、うまくいきます。バンドルファイルが更新されていないことを意味しますか?私が言ったように、 'webpack-dev-server'はメモリから完全にそのファイルをビルドして提供しますが、実際のバンドル_file_には触れません(webpack -wを実行します)。 – robertklep

+0

'app/index.js'のコードを変更しても、その結果は示されません。アラートを追加すると、ページがリフレッシュされ、アラートが呼び出されません。私がdevpackサーバーなしでwebpackコマンドを実行すると、動作します。これは、更新されないdevサーバーを使用している場合のみです。 – user3162553

関連する問題