Last active
August 3, 2017 22:42
-
-
Save pllearns/5318a8ae69bbf8497c0ef6904bd9ff19 to your computer and use it in GitHub Desktop.
Webpack Refactors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const createInnerCallback = require("./createInnerCallback"); | |
const DescriptionFileUtils = require("./DescriptionFileUtils"); | |
class DescriptionFilePlugin { | |
constructor(source, filenames, target) { | |
this.source = source; | |
this.filenames = [].concat(filenames); | |
this.target = target; | |
} | |
apply(resolver) { | |
const filenames = this.filenames; | |
const target = this.target; | |
resolver.plugin(this.source, (request, callback) => { | |
const directory = request.path; | |
DescriptionFileUtils.loadDescriptionFile(resolver, directory, filenames, ((err, result) => { | |
if(err) return callback(err); | |
if(!result) { | |
if(callback.missing) { | |
filenames.forEach((filename) => { | |
callback.missing.push(resolver.join(directory, filename)); | |
}); | |
} | |
if(callback.log) callback.log("No description file found"); | |
return callback(); | |
} | |
const relativePath = "." + request.path.substr(result.directory.length).replace(/\\/g, "/"); | |
const obj = Object.assign({}, request, { | |
descriptionFilePath: result.path, | |
descriptionFileData: result.content, | |
descriptionFileRoot: result.directory, | |
relativePath: relativePath | |
}); | |
resolver.doResolve(target, obj, "using description file: " + result.path + " (relative path: " + relativePath + ")", createInnerCallback((err, result) => { | |
if(err) return callback(err); | |
if(result) return callback(null, result); | |
// Don't allow other description files or none at all | |
callback(null, null); | |
}, callback)); | |
})); | |
}); | |
} | |
} | |
module.exports = DescriptionFilePlugin; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const createInnerCallback = require("./createInnerCallback") | |
const assign = require("object-assign") | |
class FileExistsPlugin { | |
constructor(source, target) { | |
this.source = source | |
this.target = target | |
} | |
apply(resolver) { | |
const target = this.target | |
resolver.plugin((this.source, (request, callback) => { | |
const fs = this.fileSystem | |
const file = request.path | |
fs.stat((file, (err, stat) => { | |
if(err || !stat) { | |
if(callback.missing) callback.missing.push(file) | |
if(callback.log) callback.log(file + " doesn't exist") | |
return callback() | |
} | |
if(!stat.isFile()) { | |
if(callback.missing) callback.missing.push(file) | |
if(callback.log) callback.log(file + " is not a file") | |
return callback() | |
} | |
this.doResolve(target, request, "existing file: " + file, callback, true) | |
}).bind(this)) | |
})) | |
} | |
} | |
module.exports = FileExistsPlugin |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment