2016-07-25 66 views
0

我有一些與webpack的麻煩。我使用ES6,ReactJS,Mobx和SASS。這裏是我的開發配置:Webpack不重建包

var path = require('path'); 
var webpack = require('webpack'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var autoprefixer = require('autoprefixer'); 

var pathes = { 
    root: './src/main/webapp/WEB-INF/static', 
    entry: './src/main/javascript/client.js', 
    js: '/js/', 
    css: '/css/' 
} 

var extractSASS = new ExtractTextPlugin(path.join(pathes.css, 'main.css')); 
var extractVendorCSS = new ExtractTextPlugin(path.join(pathes.css, 'vendor.css')); 

module.exports = { 
    devtool: 'eval-source-map', 
    entry: pathes.entry, 
    output: { 
    path: pathes.root, 
    filename: path.join(pathes.js, 'app.js') 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     exclude: /(node_modules)/, 
     loaders: [ 'babel' ] 
     }, 
     { 
     test: /\.scss$/, 
     loader: extractSASS.extract([ 'css', 'postcss', 'sass' ]) 
     }, 
     { 
     test: /\.css$/, 
     loader: extractVendorCSS.extract([ 'css' ]) 
     } 
    ] 
    }, 
    plugins: [ 
    extractSASS, 
    extractVendorCSS, 
    new webpack.DefinePlugin({ 
     DEVELOPMENT: true 
    }) 
    ], 
    postcss: function() { 
    return [ autoprefixer ]; 
    } 
}; 

全部是好的,但今天我對重定向服務器端春季啓動應用程序添加攔截器/index。我不知道這是如何打破webpack,但他停下來重建捆綁。 要的WebPack運行我使用這個命令:

webpack --progress --colors --watch --config ./configs/webpack.development.config.js 

我不使用的WebPack-dev的服務器,因爲靜態文件被嵌入的Tomcat(春季啓動)服務。

在控制檯webpack中表示bundle已重建,但bundle不包含任何更改。

一個有趣的細節是,如果我將包名稱從app.js更改爲例如app1.js並通過上面的命令重新運行webpack,則webpack將採取所有更改並且該包將被更新。之後,webpack將自動重建該包以進行更改(因爲--watch)。

爲什麼webpack不重建與舊名稱app.js捆綁?

回答

1

如果您的控制檯顯示文件已被重建並且您沒有看到更改,則瀏覽器可能會緩存這些文件。

嘗試加入一些類型的緩存無效化參數的,無論你是包括他們:

<script src="app.js?<% time.now() %>"></script> 

這是罰款的發展,但對於生產,你可能想看看在使用assets-webpack-plugin