mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
29 lines
673 B
JavaScript
29 lines
673 B
JavaScript
|
import { join } from 'path'
|
||
|
import { unlink } from 'mz/fs'
|
||
|
|
||
|
export default class UnlinkFilePlugin {
|
||
|
constructor () {
|
||
|
this.prevAssets = {}
|
||
|
}
|
||
|
|
||
|
apply (compiler) {
|
||
|
compiler.plugin('after-emit', (compilation, callback) => {
|
||
|
const removed = Object.keys(this.prevAssets)
|
||
|
.filter((a) => !compilation.assets[a])
|
||
|
|
||
|
this.prevAssets = compilation.assets
|
||
|
|
||
|
Promise.all(removed.map(async (f) => {
|
||
|
const path = join(compiler.outputPath, f)
|
||
|
try {
|
||
|
await unlink(path)
|
||
|
} catch (err) {
|
||
|
if (err.code === 'ENOENT') return
|
||
|
throw err
|
||
|
}
|
||
|
}))
|
||
|
.then(() => callback(), callback)
|
||
|
})
|
||
|
}
|
||
|
}
|