2016-04-21 83 views
1

我試圖用熱模塊替換與Webpack構建我的React項目。但是,Webpack會忽略文件更改。我究竟做錯了什麼? 我的配置:React和hmr,爲什麼Webpack會忽略更改?

var path = require('path'); 
    var webpack = require('webpack'); 

    module.exports = { 
    entry: [ 
     'webpack-dev-server/client?http://localhost:4567', 
     'webpack/hot/only-dev-server', 
     './src/index' 
    ], 
    output: { 
     path: path.join(__dirname, 'dist'), 
     filename: 'bundle.js', 
     publicPath: '/static/' 
    }, 
    plugins: [ 
     new webpack.HotModuleReplacementPlugin(), 
     new webpack.NoErrorsPlugin() 
    ], 
    module: { 
     loaders: [{ 
     test: /\.js$/, 
     loaders: ['react-hot', 'babel'], 
     include: [path.join(__dirname, 'src')] 
     }] 
    } 
    }; 

我的文件結構:

src 
--app 
----actions 
----components 
----constants 
----reducers 
----app.js 
----config.js 
--index.js 

熱模塊更換工作正常,如果模塊文件是在「SRC」文件夾,否則什麼也不會發生變化上。

謝謝!

+1

'module.loaders.include'不是「包含路徑」,它是條件以及'module.loaders.test'。所以,js loader不會應用於不在'src'文件夾中的文件。 –

+0

remove include選項不起作用('exclude:/ node_modules /'改爲) –

+0

雖然'src'文件夾中的js文件HMR與'import任何東西一起工作'./ whatever.js''不適用於'src/app/components'和'import從'。/ app/components/whatever.js''中得到什麼? –

回答

0

因爲您已在您的webpack配置中設置了include

你可以像這樣改變你的配置: var path = require('path');

var webpack = require('webpack'); 

    module.exports = { 
    entry: [ 
     'webpack-dev-server/client?http://localhost:4567', 
     'webpack/hot/only-dev-server', 
     './src/index' 
    ], 
    output: { 
     path: path.join(__dirname, 'dist'), 
     filename: 'bundle.js', 
     publicPath: '/static/' 
    }, 
    plugins: [ 
     new webpack.HotModuleReplacementPlugin(), 
     new webpack.NoErrorsPlugin() 
    ], 
    module: { 
     loaders: [{ 
     test: /\.js$/, 
     loaders: ['react-hot', 'babel'], 
     include: [`all of your dirs you want to watch`] 
     }] 
    } 
    }; 
+0

'include:[path.join(__ dirname,'src'),path.join(__ dirname,'src/app')]' WDS –

+0

沒有反應,您可以嘗試使用排除代替包括 –

+0

'排除:/ node_modules /'不包含選項也不起作用 –