ExamplesCompiler.prototype.addFile = function()

in packages/docpack-examples-compiler/lib/ExamplesCompiler.js [150:209]


ExamplesCompiler.prototype.addFile = function(file, resourcePath) {
  // TODO
  // ExampleFile optionally may have `context` property for proper dependencies resolving
  var compilationContext = file.context || this._compiler.context;

  // Add file
  this.files.push(file);
  var fileIndex = this.files.indexOf(file);

  // Get loaders to process example file
  var matchedLoaders = this.getLoadersToProcessExampleFile(file);

  // Shared loader config
  var sharedDataLoaderConfig = {};

  sharedDataLoaderConfig['loader'] = SHARED_DATA_LOADER_PATH;

  sharedDataLoaderConfig[WEBPACK_VERSION === '1' ? 'query' : 'options'] = {
    path: fileIndex.toString() + '.content',
    hash: getHash(file.content)
  };

  var loadersRequest = matchedLoaders
    .concat([sharedDataLoaderConfig])
    .map(tools.stringifyLoaderConfig)
    .join('!');

  var fullRequest = format('!!%s!%s', loadersRequest, resourcePath);

  // Get file output name
  var entryName = this.getOutputFilename(file, resourcePath);

  if (this.hasHotModuleReplacement()) {
    var serverOpts = this._compiler.parentCompilation.compiler.options.devServer;
    var domain = `${serverOpts.https ? 'https' : 'http'}://${serverOpts.host}:${serverOpts.port}`;
    var clientEntryPath = require.resolve("webpack-dev-server/client/");

    var entries = [`${clientEntryPath}?${domain}`];

    if (serverOpts.hotOnly) {
      entries.push('webpack/hot/only-dev-server');
    } else if (serverOpts.hot) {
      entries.push('webpack/hot/dev-server');
    }

    entries.push(fullRequest);
    fullRequest = entries;
  }

  // Add entry to compiler
  this.addEntry(fullRequest, entryName, compilationContext);

  return {
    file: file,
    entryName: entryName,
    loaders: matchedLoaders,
    loadersRequest: loadersRequest,
    fullRequest: fullRequest
  }
};