123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- 'use strict';
- var _path = require('path');
- var _path2 = _interopRequireDefault(_path);
- var _preProcessPattern = require('./preProcessPattern');
- var _preProcessPattern2 = _interopRequireDefault(_preProcessPattern);
- var _processPattern = require('./processPattern');
- var _processPattern2 = _interopRequireDefault(_processPattern);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function CopyWebpackPlugin() {
- var patterns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- if (!Array.isArray(patterns)) {
- throw new Error('[copy-webpack-plugin] patterns must be an array');
- }
- // Defaults debug level to 'warning'
- options.debug = options.debug || 'warning';
- // Defaults debugging to info if only true is specified
- if (options.debug === true) {
- options.debug = 'info';
- }
- var debugLevels = ['warning', 'info', 'debug'];
- var debugLevelIndex = debugLevels.indexOf(options.debug);
- function log(msg, level) {
- if (level === 0) {
- msg = 'WARNING - ' + msg;
- } else {
- level = level || 1;
- }
- if (level <= debugLevelIndex) {
- console.log('[copy-webpack-plugin] ' + msg); // eslint-disable-line no-console
- }
- }
- function warning(msg) {
- log(msg, 0);
- }
- function info(msg) {
- log(msg, 1);
- }
- function debug(msg) {
- log(msg, 2);
- }
- var apply = function apply(compiler) {
- var fileDependencies = void 0;
- var contextDependencies = void 0;
- var written = {};
- var context = void 0;
- if (!options.context) {
- context = compiler.options.context;
- } else if (!_path2.default.isAbsolute(options.context)) {
- context = _path2.default.join(compiler.options.context, options.context);
- } else {
- context = options.context;
- }
- var emit = function emit(compilation, cb) {
- debug('starting emit');
- var callback = function callback() {
- debug('finishing emit');
- cb();
- };
- fileDependencies = [];
- contextDependencies = [];
- var globalRef = {
- info: info,
- debug: debug,
- warning: warning,
- compilation: compilation,
- written: written,
- fileDependencies: fileDependencies,
- contextDependencies: contextDependencies,
- context: context,
- inputFileSystem: compiler.inputFileSystem,
- output: compiler.options.output.path,
- ignore: options.ignore || [],
- copyUnmodified: options.copyUnmodified,
- concurrency: options.concurrency
- };
- if (globalRef.output === '/' && compiler.options.devServer && compiler.options.devServer.outputPath) {
- globalRef.output = compiler.options.devServer.outputPath;
- }
- var tasks = [];
- patterns.forEach(function (pattern) {
- tasks.push(Promise.resolve().then(function () {
- return (0, _preProcessPattern2.default)(globalRef, pattern);
- })
- // Every source (from) is assumed to exist here
- .then(function (pattern) {
- return (0, _processPattern2.default)(globalRef, pattern);
- }));
- });
- Promise.all(tasks).catch(function (err) {
- compilation.errors.push(err);
- }).then(function () {
- return callback();
- });
- };
- var afterEmit = function afterEmit(compilation, cb) {
- debug('starting after-emit');
- var callback = function callback() {
- debug('finishing after-emit');
- cb();
- };
- var compilationFileDependencies = void 0;
- var addFileDependency = void 0;
- if (Array.isArray(compilation.fileDependencies)) {
- compilationFileDependencies = new Set(compilation.fileDependencies);
- addFileDependency = function addFileDependency(file) {
- return compilation.fileDependencies.push(file);
- };
- } else {
- compilationFileDependencies = compilation.fileDependencies;
- addFileDependency = function addFileDependency(file) {
- return compilation.fileDependencies.add(file);
- };
- }
- var compilationContextDependencies = void 0;
- var addContextDependency = void 0;
- if (Array.isArray(compilation.contextDependencies)) {
- compilationContextDependencies = new Set(compilation.contextDependencies);
- addContextDependency = function addContextDependency(file) {
- return compilation.contextDependencies.push(file);
- };
- } else {
- compilationContextDependencies = compilation.contextDependencies;
- addContextDependency = function addContextDependency(file) {
- return compilation.contextDependencies.add(file);
- };
- }
- // Add file dependencies if they're not already tracked
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
- try {
- for (var _iterator = fileDependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var file = _step.value;
- if (compilationFileDependencies.has(file)) {
- debug('not adding ' + file + ' to change tracking, because it\'s already tracked');
- } else {
- debug('adding ' + file + ' to change tracking');
- addFileDependency(file);
- }
- }
- // Add context dependencies if they're not already tracked
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
- var _iteratorNormalCompletion2 = true;
- var _didIteratorError2 = false;
- var _iteratorError2 = undefined;
- try {
- for (var _iterator2 = contextDependencies[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
- var _context = _step2.value;
- if (compilationContextDependencies.has(_context)) {
- debug('not adding ' + _context + ' to change tracking, because it\'s already tracked');
- } else {
- debug('adding ' + _context + ' to change tracking');
- addContextDependency(_context);
- }
- }
- } catch (err) {
- _didIteratorError2 = true;
- _iteratorError2 = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion2 && _iterator2.return) {
- _iterator2.return();
- }
- } finally {
- if (_didIteratorError2) {
- throw _iteratorError2;
- }
- }
- }
- callback();
- };
- if (compiler.hooks) {
- var plugin = { name: 'CopyPlugin' };
- compiler.hooks.emit.tapAsync(plugin, emit);
- compiler.hooks.afterEmit.tapAsync(plugin, afterEmit);
- } else {
- compiler.plugin('emit', emit);
- compiler.plugin('after-emit', afterEmit);
- }
- };
- return {
- apply: apply
- };
- }
- CopyWebpackPlugin['default'] = CopyWebpackPlugin;
- module.exports = CopyWebpackPlugin;
|