29 lines
903 B
JavaScript
29 lines
903 B
JavaScript
let loaderUtils = require('loader-utils');
|
|
let componentPath = require.resolve('./async-component');
|
|
|
|
module.exports = function () { };
|
|
module.exports.pitch = function (remainingRequest) {
|
|
this.cacheable && this.cacheable();
|
|
let query = loaderUtils.getOptions(this) || {};
|
|
let routeName = typeof query.name === 'function' ? query.name(this.resourcePath) : null;
|
|
let name;
|
|
if (routeName !== null) {
|
|
name = routeName;
|
|
}
|
|
else if ('name' in query) {
|
|
name = query.name;
|
|
}
|
|
else if ('formatName' in query) {
|
|
name = query.formatName(this.resourcePath);
|
|
}
|
|
|
|
return `
|
|
import async from ${JSON.stringify(componentPath)};
|
|
function load(cb) {
|
|
require.ensure([], function (require) {
|
|
cb( require(${loaderUtils.stringifyRequest(this, '!!' + remainingRequest)}) );
|
|
}${name ? (', ' + JSON.stringify(name)) : ''});
|
|
}
|
|
export default async(load);
|
|
`;
|
|
}; |