버그 또는 설치 프로그램인지, CommonsChunkPlugin을 사용하여 프로젝트의 세 진입 점에 대해 별도의 common.js를 얻고 있는지, 그리고 css 파일을 얻으려면 extract-text-webpack-plugin을 사용하십시오. 내 진입 점은 app, login 및 register입니다. 내가 얻을 수 있어요 :extract-text-webpack-plugin이있는 일반 청크에 대해 CSS가 추출되지 않음
app.js
app.vendor.js
login.js
register.js
common.js
CSS의 경우 :
app.css
register.css
login.css
내가 common.css 생성 얻을 수없는 것. 모든 css는 하나의 app.css 파일에 들어갑니다.
내 프로젝트가 설치 vuetify 웹팩 템플릿을 기반으로합니다
3 진입 점 : 여기 https://github.com/vuetifyjs/webpack-advanced
나의 설정입니다
module.exports = {
entry: {
app: './src/main.js',
login: './src/Login/login.js',
register: './src/Register/register.js'
},
플러그인 - 내가 각 항목에 대해 HtmlWebpackPlugin이 포인트 (하나만 표시) :
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === 'testing'
? 'index.html'
: config.build.index,
template: 'index.html',
inject: false,
hash: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: false,
minifyJS: true
},
chunksSortMode: appChunkOrder
}),
공통 덩어리 :
new webpack.optimize.CommonsChunkPlugin({
name: 'app.vendor',
chunks: ['app'],
minChunks: isVendor,
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'login.vendor',
chunks: ['login'],
minChunks: isVendor,
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'register.vendor',
chunks: ['register'],
minChunks: isVendor,
}),
// Extract chunks common to both app and login
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
chunks: ['app.vendor', 'login.vendor', 'register.vendor', 'app', 'login', 'register'],
minChunks: (module, count) => count >= 2 && isVendor(module),
}),
전체 설정 :
plugins: [
new webpack.DefinePlugin({'process.env': env }),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
new OptimizeCSSPlugin({
cssProcessorOptions: {
safe: true
}
}),
// generate Html index files for 3 entries:
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === 'testing'
? 'index.html'
: config.build.index,
template: 'index.html',
inject: false,
hash: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: false,
minifyJS: true
},
chunksSortMode: appChunkOrder
}),
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === 'testing'
? 'src/Login/login.html'
: config.build.login,
template: 'src/Login/login.html',
inject: false,
hash: true,
minify: false,
chunksSortMode: loginChunkOrder
}),
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === 'testing'
? 'src/Register/register.html'
: config.build.register,
template: 'src/Register/register.html',
inject: false,
hash: true,
minify: false,
chunksSortMode: registerChunkOrder
}),
// Chunks:
new webpack.optimize.CommonsChunkPlugin({
name: 'app.vendor',
chunks: ['app'],
minChunks: isVendor,
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'login.vendor',
chunks: ['login'],
minChunks: isVendor,
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'register.vendor',
chunks: ['register'],
minChunks: isVendor,
}),
// Extract chunks common to both app and login
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
chunks: ['app.vendor', 'login.vendor', 'register.vendor', 'app', 'login', 'register'],
minChunks: (module, count) => count >= 2 && isVendor(module),
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
어떤 도움에 감사!
답장을 보내 주셔서 감사합니다. 나는'vuetify '에서 가져 오기 Vuetify 같은 제 3 자 패키지를 가져오고 있는데,이 경우 css 파일을 어떻게 처리해야할지 모르겠다. 별도로 가져올 필요가 있니? – JerryH
제 3 자 라이브러리와 함께 제공되는 CSS를 분리 할 수 있기를 기대합니다. 하지만 파일 이름으로 직접 가져올 수는 없습니다 ... – JerryH