我最近接管了一個前端項目,並注意到dev
腳本(帶有熱模塊重新加載等)的初始啓動時間需要非常長的時間,大約2分鐘。改進webpack圖像/ css構建時間?
將verbose
設置爲true
後,我意識到幾乎所有這些時間都花在重新編譯CSS和圖像上,甚至沒有改變。
中的WebPack生成的輸出是一個長長的清單,看起來像這樣:
---------
Webpack stdout for /Users/myuser/Documents/repos/myApp-frontend/client/modules/App/background.jpg
---------
Hash: 0f500227a855ef9eb67c
Version: webpack 2.1.0-beta.8
Time: 68ms
Asset Size Chunks Chunk Names
.webpack.res.1504199219496_875923.js 132 kB 0 [emitted] main
+ 1 hidden modules
---------
Webpack stdout for /Users/myuser/Documents/repos/myApp-frontend/client/modules/App/AppAuthorized.css
---------
Hash: 83f1c479b77c7539baeb
Version: webpack 2.1.0-beta.8
Time: 549ms
Asset Size Chunks Chunk Names
.webpack.res.1504199221679_732531.js 23.2 kB 0 [emitted] main
+ 5 hidden modules
的圖像似乎迅速處理,但這些2KB CSS文件正在半秒編譯,並有其中有幾十個。
這裏就是我的WebPack的配置是這樣的:
var cssnext = require('postcss-cssnext');
var postcssFocus = require('postcss-focus');
var postcssReporter = require('postcss-reporter');
var precss = require('precss');
var syntax = require('postcss-scss');
module.exports = {
output: {
publicPath: '/',
libraryTarget: 'commonjs2',
},
resolve: {
extensions: ['', '.js', '.jsx'],
modules: [
'client',
'node_modules',
],
},
module: {
loaders: [
{
test: /\.css$/,
exclude: /node_modules/,
loader: 'cache-loader!style-loader!css-loader?localIdentName=[name]__[local]__[hash:base64:5]&modules&importLoaders=1&sourceMap!postcss-loader',
},
{
test: /\.jpe?g$|\.gif$|\.png$|\.svg$/i,
exclude: /node_modules/,
loader: 'cache-loader!url-loader?limit=9999999999999',
},
{
test: /\.ico$/,
loader: 'file-loader?name=[name].[ext]'
},
],
},
postcss:() => ({
plugins: [
precss(),
postcssFocus(),
cssnext({
browsers: ['last 2 versions', 'IE > 10'],
}),
postcssReporter({
clearMessages: true,
}),
],
syntax: syntax,
}),
};
任何意見,以加快CSS彙編起來,或以某種方式緩存資產?
不是一個可行的解決方案,但只是好奇 - 你的電腦跑掉硬盤或SSD? –
@JonUleis它有一個SSD,爲什麼? –
升級到SSD大大提高了我的編譯時間 - 因爲您已經在一個編譯時間內,這聽起來像是一個真正緩慢的編譯過程。 –