rsnext/packages/next/build/webpack/plugins/hashed-chunk-ids-plugin.ts
Tim Neutkens 6feca310d7
Revert ncc webpack (#7370)
* Revert "Add retrying to CircleCi and fixes for ncc'ed webpack (#7366)"

This reverts commit 5beb365d12.

* Revert "ncc Webpack build (#7301)"

This reverts commit bd8f3c625f.

# Conflicts:
#	packages/next/package.json
2019-05-17 13:25:46 +02:00

36 lines
981 B
TypeScript

import { Compiler, Plugin } from 'webpack'
import { createHash } from 'crypto'
export class HashedChunkIdsPlugin implements Plugin {
buildId: string
constructor(buildId: string) {
this.buildId = buildId
}
apply(compiler: Compiler) {
compiler.hooks.compilation.tap('HashedChunkIdsPlugin', compilation => {
compilation.hooks.beforeChunkIds.tap('HashedChunkIdsPlugin', chunks => {
for (const chunk of chunks) {
if (chunk.id === null && chunk.name) {
const id = chunk.name.replace(this.buildId, '')
chunk.id = createHash('md4')
.update(id)
.digest('hex')
.substr(0, 4)
continue
}
const ids = [...chunk.modulesIterable]
.map(m => m.id)
.sort() as string[]
const h = createHash('md4')
ids.forEach(id => h.update(id))
chunk.id = h.digest('hex').substr(0, 4)
}
})
})
}
}