通过使用Web pack Encore来改善Symfony项目中资产的编译时间,我发现自己的编译永无止境,这使我认为有些事情使我无所适从。我很难理解这个工具。我想了解如何在Symfony项目中从中受益。
这是我要应用的文档部分:WebPackEncore
这是我要改进的配置:
var Encore = require('@symfony/webpack-encore');
var CommonsChunkPlugin =
require('webpack/lib/optimize/CommonsChunkPlugin');
Encore
.setOutputPath('web/build/')
.setPublicPath('/build')
.cleanupOutputBeforeBuild()
.addEntry('app', './app/Resources/assets/default/js/main.js')
.addEntry('home', [
'./app/Resources/assets/default/js/home.js',
'./app/Resources/assets/default/scss/home.scss',
])
.addEntry('page1', [
'./app/Resources/assets/default/js/page1.js',
'./app/Resources/assets/default/scss/page1.scss',
])
.addEntry('page2', [
'./app/Resources/assets/default/js/page2.js',
'./app/Resources/assets/default/scss/page2.scss',
])
(... etc)
.enableSassLoader(function(sassOptions) {}, {
resolveUrlLoader: false
})
.autoProvidejQuery()
.enableSourceMaps(!Encore.isProduction())
.enableVersioning()
;
// export the final configuration
module.exports = Encore.getWebpackConfig();
这是我测试过的配置:
var Encore = require('@symfony/webpack-encore');
const configs = [];
//app
Encore.setOutputPath('web/build/main').setPublicPath('/build/main')
.cleanupOutputBeforeBuild()
.addEntry('app', './app/Resources/assets/default/js/main.js')
.autoProvidejQuery()
.enableSourceMaps(!Encore.isProduction())
.enableVersioning()
.cleanupOutputBeforeBuild()
;
const appConfig = Encore.getWebpackConfig();
appConfig.name='appConfig';
configs.push(appConfig);
//home
Encore.setOutputPath('web/build/home').setPublicPath('/build/home')
.cleanupOutputBeforeBuild()
.addEntry('home', [
'./app/Resources/assets/default/js/home.js',
'./app/Resources/assets/default/scss/home.scss',
])
.enableSassLoader(function(sassOptions) {}, {
resolveUrlLoader: false
})
.autoProvidejQuery()
.enableSourceMaps(!Encore.isProduction())
.enableVersioning()
.cleanupOutputBeforeBuild()
;
const homeConfig = Encore.getWebpackConfig();
homeConfig.name='homeConfig';
configs.push(homeConfig);
(...etc)
module.exports = configs;
webpack是我真正需要的工具吗?