2017-10-10 10 views
0

私はReactJS-Appを開発しており、これはPHPバックエンドによって提供されます。私のローカルマシンでは、プロジェクトのルートを指す仮想ホストでMAMPをセットアップし、webpackを使用してReact-Appをバンドルします。ReactJS PHPバックエンド上のアプリケーション - ローカルマシンでホットリロードする方法?

ホットリロードで作業することを本当に楽しんでいるので、今すぐwebpack dev-serverをプロキシMAMPに使用して、反応ホットローディング機能を利用しようとしています。

私はまだ動作していないので、誰かが設定を手伝ってくれることを願っています。それとも、基本的に私のアプローチではないのですか?とにかく、これで私を助けてくれたら嬉しいよ。前もって感謝します!これまでのwebpackの設定はこれです:

const webpack = require('webpack'); 
const path = require('path'); 
const ExtractTextPlugin = require('extract-text-webpack-plugin'); 
const StyleLintPlugin = require('stylelint-webpack-plugin'); 

module.exports = { 
    devtool: 'cheap-module-source-map', 
    devServer: { 
    port: 3000, 
    proxy: { 
     '*': { 
     target: 'http://my-virtual-host.dev:8888/', 
     } 
    } 
    }, 
    entry: [ 
    './src/app.jsx' 
    ], 
    output: { 
    path: path.join(__dirname, 'build'), 
    filename: 'bundle.js', 
    publicPath: 'http://localhost:3000/build/' 
    }, 
    resolve: { 
    extensions: ['.js', '.jsx'] 
    }, 
    module: { 
    loaders: [ 
     { 
     enforce: 'pre', 
     test: /\.jsx?$/, 
     include: [ 
      path.resolve(__dirname, 'src'), 
     ], 
     loader: 'eslint-loader', 
     }, 
     { 
     test: /\.jsx?$/, 
     include: [ 
      path.resolve(__dirname, 'src'), 
     ], 
     loader: 'react-hot-loader' 
     }, 
     { 
     test: /\.jsx?$/, 
     include: [ 
      path.resolve(__dirname, 'src'), 
     ], 
     loader: 'babel-loader', 
     }, 
     { 
     test: /\.css$/, 
     use: ExtractTextPlugin.extract({ 
      use: [ 
      { 
       loader: 'css-loader', 
       options: { importLoaders: 1 }, 
      }, 
      'postcss-loader', 
      ], 
     }), 
     } 
    ] 
    }, 
    plugins: [ 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.NoEmitOnErrorsPlugin(), 

    new ExtractTextPlugin('bundle.css'), 
    new StyleLintPlugin({ 
     configFile: '.stylelintrc', 
     context: 'src', 
     files: '**/*.pcss' 
    }) 
    ] 
}; 
+1

これはあなたに役立ちます:https://webpack.js.org/guides/hot-module-replacement/ – Axnyff

+0

ありがとう@Axnyff!私はこの問題を深く掘り下げてきました。何が私を混乱させているのかは、それが基本的にどのように働いているかですそれはMAMPが私のindex.htmlを提供し、webpack devサーバーサーバーが資産を提供していますか?それとも、MAMPのindex.htmlを "取る"がすべてを処理しているwebpack devサーバーですか?ありがとうございました! – nielsG

+1

@Axnyff私は私の質問を解決しました、下記のコメントを参照してください!さらなる進出を手伝ってくれてありがとう! – nielsG

答えて

0

さて、私は解決策を見つけました!私のせいで、私はwebpack dev serverがMAMPへのすべてのリクエストを "代理"してその返答を返さなければならないと考えていました。別の方法で私の問題を解決する:MAMPは私のPHPアプリケーションとwebpack devサーバをその資産だけを提供します。

私のPHPアプリケーションは、webpack devサーバにアセットをリンクしています(githubの問題に関するこの議論は、私に多くの助けになりました:https://github.com/webpack/webpack-dev-server/issues/400)。例えばhttp://localhost:8080/build/app.js

module.exports = { 
    devServer: { 
    proxy: { 
     '*': { 
     target: 'http://my-virtual-host.dev:8888/', 
     changeOrigin: true, 
     } 
    } 
    }, 
    entry: [ 
    'webpack-dev-server/client?http://localhost:8080/', 
    'webpack/hot/only-dev-server', // Enable hot reloading 
    './src/app.jsx' 
    ], 
    output: { 
    path: path.join(__dirname, 'build'), 
    filename: 'bundle.js', 
    publicPath: 'http://localhost:8080/build/' 
    }, 
} 

リンク資産、proxy設定やoutput.publicPathはトリックをした:

は今、私は私のWebPACKの設定で変更主な属性です。ホットリロードは正常に動作します。

これは私のために働いていますが、今私はあなたの考えにまだ魅了されています!

関連する問題