entryLoader.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. 'use strict';
  2. var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
  3. var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
  4. var _createClass2 = require('babel-runtime/helpers/createClass');
  5. var _createClass3 = _interopRequireDefault(_createClass2);
  6. var _loaderUtils = require('loader-utils');
  7. var _loaderUtils2 = _interopRequireDefault(_loaderUtils);
  8. var _normalizePath = require('normalize-path');
  9. var _normalizePath2 = _interopRequireDefault(_normalizePath);
  10. var _createEntry = require('../util/createEntry');
  11. var _createEntry2 = _interopRequireDefault(_createEntry);
  12. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  13. var EntryConfig = function () {
  14. function EntryConfig() {
  15. (0, _classCallCheck3.default)(this, EntryConfig);
  16. this.files = [];
  17. }
  18. (0, _createClass3.default)(EntryConfig, [{
  19. key: 'addFile',
  20. value: function addFile(file) {
  21. var normalizedFile = (0, _normalizePath2.default)(file);
  22. this.files.push(normalizedFile);
  23. }
  24. }, {
  25. key: 'removeFile',
  26. value: function removeFile(file) {
  27. var normalizedFile = (0, _normalizePath2.default)(file);
  28. this.files = this.files.filter(function (f) {
  29. return f !== normalizedFile;
  30. });
  31. }
  32. }, {
  33. key: 'getFiles',
  34. value: function getFiles() {
  35. return this.files;
  36. }
  37. }]);
  38. return EntryConfig;
  39. }();
  40. var entryLoader = function entryLoader() {
  41. var _this = this;
  42. var loaderOptions = _loaderUtils2.default.getOptions(this);
  43. var config = loaderOptions.entryConfig;
  44. // Remove all dependencies of the loader result
  45. this.clearDependencies();
  46. var dependencies = config.getFiles().map(function (file) {
  47. return _loaderUtils2.default.stringifyRequest(_this, file);
  48. });
  49. // add all entries as dependencies
  50. dependencies.forEach(this.addDependency.bind(this));
  51. // build source code
  52. var sourceCode = (0, _createEntry2.default)(dependencies);
  53. this.callback(null, sourceCode, null);
  54. };
  55. module.exports = entryLoader;
  56. module.exports.EntryConfig = EntryConfig;