feat(ssr): render initial and used async css chunks (vuejs/vue#7902)

This commit is contained in:
Pooya Parsa 2018-05-02 13:40:39 +04:30 committed by Pooya Parsa
parent dfab96fdb7
commit 2428a13c05

View File

@ -1,6 +1,6 @@
import hash from 'hash-sum'
import uniq from 'lodash.uniq'
import { isJS, onEmit } from './util'
import uniq from 'lodash/uniq'
import { isJS, isCSS, onEmit } from './util'
export default class VueSSRClientPlugin {
constructor(options = {}) {
@ -19,10 +19,10 @@ export default class VueSSRClientPlugin {
const initialFiles = uniq(Object.keys(stats.entrypoints)
.map(name => stats.entrypoints[name].assets)
.reduce((assets, all) => all.concat(assets), [])
.filter(isJS))
.filter((file) => isJS(file) || isCSS(file)))
const asyncFiles = allFiles
.filter(isJS)
.filter((file) => isJS(file) || isCSS(file))
.filter(file => initialFiles.indexOf(file) < 0)
const manifest = {
@ -43,7 +43,8 @@ export default class VueSSRClientPlugin {
if (!chunk || !chunk.files) {
return
}
const files = manifest.modules[hash(m.identifier)] = chunk.files.map(fileToIndex)
const id = m.identifier.replace(/\s\w+$/, '') // remove appended hash
const files = manifest.modules[hash(id)] = chunk.files.map(fileToIndex)
// find all asset modules associated with the same chunk
assetModules.forEach(m => {
if (m.chunks.some(id => id === cid)) {