azure-storage-webpack-plugin
Version:
Webpack plugin that uploads webpack assets to a Azure storage account.
41 lines (32 loc) • 1.51 kB
JavaScript
var azure = require('azure-storage');
var utils = require('./lib/utils');
function apply(options, compiler) {
// When assets are being emmited (not yet on file system)
compiler.plugin('emit', function (compilation, callback) {
var blobService = azure.createBlobService.apply(azure, options.blobService);
blobService.createContainerIfNotExists(options.container.name, options.container.options, function(error, result, response) {
if(!error){
var assets = utils.getAssets(compilation);
assets.forEach(function(asset) {
blobService.createBlockBlobFromText(options.container.name, asset.filePath, asset.fileContent, { contentSettings: options.metadata }, function(error, result, response) {
if(!error){
console.log("successfully uploaded '" + asset.filePath + "' to container '" + options.container.name + "'");
} else {
console.error(error);
}
});
});
} else {
console.error(error);
}
});
});
}
function AzureStorageDeployWebpackPlugin(options) {
// Simple pattern to be able to easily access plugin
// options when the apply prototype is called
return {
apply: apply.bind(this, options)
};
}
module.exports = AzureStorageDeployWebpackPlugin;