const join = require('path').join;
|
|
const pluginCompat = require('./util/plugin-compat');
|
|
let LevelDbSerializer;
|
let AppendSerializerPlugin;
|
|
class HardSourceLevelDbSerializerPlugin {
|
apply(compiler) {
|
pluginCompat.tap(
|
compiler,
|
'hardSourceCacheFactory',
|
'LevelDbSerializer',
|
factory => info => {
|
if (info.type === 'data') {
|
return HardSourceLevelDbSerializerPlugin.createSerializer(info);
|
}
|
return factory(info);
|
},
|
);
|
}
|
}
|
|
HardSourceLevelDbSerializerPlugin.createSerializer = info => {
|
if (!LevelDbSerializer) {
|
try {
|
LevelDbSerializer = require('./SerializerLeveldb');
|
} catch (e) {}
|
}
|
|
if (LevelDbSerializer) {
|
return new LevelDbSerializer({
|
cacheDirPath: join(info.cacheDirPath, info.name),
|
});
|
} else {
|
if (!AppendSerializerPlugin) {
|
AppendSerializerPlugin = require('./SerializerAppendPlugin');
|
}
|
|
return AppendSerializerPlugin.createSerializer(info);
|
}
|
};
|
|
module.exports = HardSourceLevelDbSerializerPlugin;
|