现在有这样的一个需求:
我想写一个webpack
插件,可以在打包构建前,通过 ajax
请求,获取数据,然后创建一个 a.json
文件放置到 src
目录下,可以在 main.js
里 import a.json
。
我这样写,虽然可以创建文件,但是打包的时候会报 no such file or directory
:
class FileCopyPlugin {
constructor () {
this.cache = []
}
apply(compiler) {
compiler.hooks.beforeRun.tapAsync('FileCopyPlugin', (compilation, callback) => {
setTimeout((function () {
fs.writeFileSync('/src/a.json', JSON.stringify({
test: 1
}, null, 2))
callback()
}), 1000)
})
}
}
main.js
import a from './a.json'
beforeRun
不是异步的吗? 可以用tapAsync
,你用tap
根本没有callback吧