| |
| |
| |
| |
| |
| "use strict"; |
|
|
| |
| |
|
|
| module.exports = class DirectoryExistsPlugin { |
| |
| |
| |
| |
| constructor(source, target) { |
| this.source = source; |
| this.target = target; |
| } |
|
|
| |
| |
| |
| |
| apply(resolver) { |
| const target = resolver.ensureHook(this.target); |
| resolver |
| .getHook(this.source) |
| .tapAsync( |
| "DirectoryExistsPlugin", |
| (request, resolveContext, callback) => { |
| const fs = resolver.fileSystem; |
| const directory = request.path; |
| if (!directory) return callback(); |
| fs.stat(directory, (err, stat) => { |
| if (err || !stat) { |
| if (resolveContext.missingDependencies) { |
| resolveContext.missingDependencies.add(directory); |
| } |
| if (resolveContext.log) { |
| resolveContext.log(`${directory} doesn't exist`); |
| } |
| return callback(); |
| } |
| if (!stat.isDirectory()) { |
| if (resolveContext.missingDependencies) { |
| resolveContext.missingDependencies.add(directory); |
| } |
| if (resolveContext.log) { |
| resolveContext.log(`${directory} is not a directory`); |
| } |
| return callback(); |
| } |
| if (resolveContext.fileDependencies) { |
| resolveContext.fileDependencies.add(directory); |
| } |
| resolver.doResolve( |
| target, |
| request, |
| `existing directory ${directory}`, |
| resolveContext, |
| callback, |
| ); |
| }); |
| }, |
| ); |
| } |
| }; |
|
|