UNPKG

@sencha/ext-webpack-plugin

Version:
141 lines (140 loc) 15.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._afterCompile = _afterCompile; exports._getDefaultVars = _getDefaultVars; exports._prepareForBuild = _prepareForBuild; function _getDefaultVars() { return { touchFile: '/themer.js', rebuild: true, watchStarted: false, firstTime: true, browserCount: 0, cwd: process.cwd(), extPath: '.', pluginErrors: [], lastNumFiles: 0, lastMilliseconds: 0, lastMillisecondsAppJson: 0, files: ['./app.json'], dirs: ['./app', './packages'] }; } function _afterCompile(compilation, vars, options) { var verbose = options.verbose; var logv = require('./pluginUtil').logv; logv(verbose, 'FUNCTION extjs _afterCompile'); const path = require('path'); let { files, dirs } = vars; const { cwd } = vars; files = typeof files === 'string' ? [files] : files; dirs = typeof dirs === 'string' ? [dirs] : dirs; const { fileDependencies, contextDependencies } = _getFileAndContextDeps(compilation, files, dirs, cwd, options); if (files.length > 0) { fileDependencies.forEach(file => { compilation.fileDependencies.add(path.resolve(file)); }); } if (dirs.length > 0) { contextDependencies.forEach(context => { compilation.contextDependencies.add(context); }); } } function _getFileAndContextDeps(compilation, files, dirs, cwd, options) { var verbose = options.verbose; var logv = require('./pluginUtil').logv; logv(verbose, 'FUNCTION _getFileAndContextDeps'); const uniq = require('lodash.uniq'); const isGlob = require('is-glob'); const { fileDependencies, contextDependencies } = compilation; const isWebpack4 = compilation.hooks; let fds = isWebpack4 ? [...fileDependencies] : fileDependencies; let cds = isWebpack4 ? [...contextDependencies] : contextDependencies; if (files.length > 0) { files.forEach(pattern => { let f = pattern; if (isGlob(pattern)) { f = glob.sync(pattern, { cwd, dot: true, absolute: true }); } fds = fds.concat(f); }); fds = uniq(fds); } if (dirs.length > 0) { cds = uniq(cds.concat(dirs)); } return { fileDependencies: fds, contextDependencies: cds }; } function _prepareForBuild(app, vars, options, output, compilation) { // try { const log = require('./pluginUtil').log; const logv = require('./pluginUtil').logv; logv(options, '_prepareForBuild'); const fs = require('fs'); const recursiveReadSync = require('recursive-readdir-sync'); var watchedFiles = []; try { watchedFiles = recursiveReadSync('./app').concat(recursiveReadSync('./packages')); } catch (err) { if (err.errno === 34) { console.log('Path does not exist'); } else { throw err; } } var currentNumFiles = watchedFiles.length; logv(options, 'watchedFiles: ' + currentNumFiles); var doBuild = true; logv(options, 'doBuild: ' + doBuild); vars.lastMilliseconds = new Date().getTime(); var filesource = 'this file enables client reload'; compilation.assets[currentNumFiles + 'FilesUnderAppFolder.md'] = { source: function () { return filesource; }, size: function () { return filesource.length; } }; logv(options, 'currentNumFiles: ' + currentNumFiles); logv(options, 'vars.lastNumFiles: ' + vars.lastNumFiles); logv(options, 'doBuild: ' + doBuild); if (currentNumFiles != vars.lastNumFiles || doBuild) { vars.rebuild = true; var bundleDir = output.replace(process.cwd(), ''); if (bundleDir.trim() == '') { bundleDir = './'; } log(app + 'Building Ext bundle at: ' + bundleDir); } else { vars.rebuild = false; } vars.lastNumFiles = currentNumFiles; // } // catch(e) { // console.log(e) // compilation.errors.push('_prepareForBuild: ' + e) // } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9hZnRlckNvbXBpbGUiLCJfZ2V0RGVmYXVsdFZhcnMiLCJfcHJlcGFyZUZvckJ1aWxkIiwidG91Y2hGaWxlIiwicmVidWlsZCIsIndhdGNoU3RhcnRlZCIsImZpcnN0VGltZSIsImJyb3dzZXJDb3VudCIsImN3ZCIsInByb2Nlc3MiLCJleHRQYXRoIiwicGx1Z2luRXJyb3JzIiwibGFzdE51bUZpbGVzIiwibGFzdE1pbGxpc2Vjb25kcyIsImxhc3RNaWxsaXNlY29uZHNBcHBKc29uIiwiZmlsZXMiLCJkaXJzIiwiY29tcGlsYXRpb24iLCJ2YXJzIiwib3B0aW9ucyIsInZlcmJvc2UiLCJsb2d2IiwicmVxdWlyZSIsInBhdGgiLCJmaWxlRGVwZW5kZW5jaWVzIiwiY29udGV4dERlcGVuZGVuY2llcyIsIl9nZXRGaWxlQW5kQ29udGV4dERlcHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiZmlsZSIsImFkZCIsInJlc29sdmUiLCJjb250ZXh0IiwidW5pcSIsImlzR2xvYiIsImlzV2VicGFjazQiLCJob29rcyIsImZkcyIsImNkcyIsInBhdHRlcm4iLCJmIiwiZ2xvYiIsInN5bmMiLCJkb3QiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImFwcCIsIm91dHB1dCIsImxvZyIsImZzIiwicmVjdXJzaXZlUmVhZFN5bmMiLCJ3YXRjaGVkRmlsZXMiLCJlcnIiLCJlcnJubyIsImNvbnNvbGUiLCJjdXJyZW50TnVtRmlsZXMiLCJkb0J1aWxkIiwiRGF0ZSIsImdldFRpbWUiLCJmaWxlc291cmNlIiwiYXNzZXRzIiwic291cmNlIiwic2l6ZSIsImJ1bmRsZURpciIsInJlcGxhY2UiLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vc3JjL2V4dGpzVXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIlxuXG5leHBvcnQgZnVuY3Rpb24gX2dldERlZmF1bHRWYXJzKCkge1xuICByZXR1cm4ge1xuICAgIHRvdWNoRmlsZTogJy90aGVtZXIuanMnLFxuICAgIHJlYnVpbGQ6IHRydWUsXG4gICAgd2F0Y2hTdGFydGVkIDogZmFsc2UsXG4gICAgZmlyc3RUaW1lIDogdHJ1ZSxcbiAgICBicm93c2VyQ291bnQgOiAwLFxuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBleHRQYXRoOiAnLicsXG4gICAgcGx1Z2luRXJyb3JzOiBbXSxcbiAgICBsYXN0TnVtRmlsZXM6IDAsXG4gICAgbGFzdE1pbGxpc2Vjb25kczogMCxcbiAgICBsYXN0TWlsbGlzZWNvbmRzQXBwSnNvbjogMCxcbiAgICBmaWxlczogWycuL2FwcC5qc29uJ10sXG4gICAgZGlyczogWycuL2FwcCcsJy4vcGFja2FnZXMnXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfYWZ0ZXJDb21waWxlKGNvbXBpbGF0aW9uLCB2YXJzLCBvcHRpb25zKSB7XG4gIHZhciB2ZXJib3NlID0gb3B0aW9ucy52ZXJib3NlXG4gIHZhciBsb2d2ID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndlxuICBsb2d2KHZlcmJvc2UsJ0ZVTkNUSU9OIGV4dGpzIF9hZnRlckNvbXBpbGUnKVxuICBjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gIGxldCB7IGZpbGVzLCBkaXJzIH0gPSB2YXJzXG4gIGNvbnN0IHsgY3dkIH0gPSB2YXJzXG4gIGZpbGVzID0gdHlwZW9mIGZpbGVzID09PSAnc3RyaW5nJyA/IFtmaWxlc10gOiBmaWxlc1xuICBkaXJzID0gdHlwZW9mIGRpcnMgPT09ICdzdHJpbmcnID8gW2RpcnNdIDogZGlyc1xuICBjb25zdCB7XG4gICAgZmlsZURlcGVuZGVuY2llcyxcbiAgICBjb250ZXh0RGVwZW5kZW5jaWVzLFxuICB9ID0gX2dldEZpbGVBbmRDb250ZXh0RGVwcyhjb21waWxhdGlvbiwgZmlsZXMsIGRpcnMsIGN3ZCwgb3B0aW9ucyk7XG4gIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgZmlsZURlcGVuZGVuY2llcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBjb21waWxhdGlvbi5maWxlRGVwZW5kZW5jaWVzLmFkZChwYXRoLnJlc29sdmUoZmlsZSkpO1xuICAgIH0pXG4gIH1cbiAgaWYgKGRpcnMubGVuZ3RoID4gMCkge1xuICAgIGNvbnRleHREZXBlbmRlbmNpZXMuZm9yRWFjaCgoY29udGV4dCkgPT4ge1xuICAgICAgY29tcGlsYXRpb24uY29udGV4dERlcGVuZGVuY2llcy5hZGQoY29udGV4dCk7XG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBfZ2V0RmlsZUFuZENvbnRleHREZXBzKGNvbXBpbGF0aW9uLCBmaWxlcywgZGlycywgY3dkLCBvcHRpb25zKSB7XG4gIHZhciB2ZXJib3NlID0gb3B0aW9ucy52ZXJib3NlXG4gIHZhciBsb2d2ID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndlxuICBsb2d2KHZlcmJvc2UsJ0ZVTkNUSU9OIF9nZXRGaWxlQW5kQ29udGV4dERlcHMnKVxuICBjb25zdCB1bmlxID0gcmVxdWlyZSgnbG9kYXNoLnVuaXEnKVxuICBjb25zdCBpc0dsb2IgPSByZXF1aXJlKCdpcy1nbG9iJylcblxuICBjb25zdCB7IGZpbGVEZXBlbmRlbmNpZXMsIGNvbnRleHREZXBlbmRlbmNpZXMgfSA9IGNvbXBpbGF0aW9uO1xuICBjb25zdCBpc1dlYnBhY2s0ID0gY29tcGlsYXRpb24uaG9va3M7XG4gIGxldCBmZHMgPSBpc1dlYnBhY2s0ID8gWy4uLmZpbGVEZXBlbmRlbmNpZXNdIDogZmlsZURlcGVuZGVuY2llcztcbiAgbGV0IGNkcyA9IGlzV2VicGFjazQgPyBbLi4uY29udGV4dERlcGVuZGVuY2llc10gOiBjb250ZXh0RGVwZW5kZW5jaWVzO1xuICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgIGZpbGVzLmZvckVhY2goKHBhdHRlcm4pID0+IHtcbiAgICAgIGxldCBmID0gcGF0dGVyblxuICAgICAgaWYgKGlzR2xvYihwYXR0ZXJuKSkge1xuICAgICAgICBmID0gZ2xvYi5zeW5jKHBhdHRlcm4sIHsgY3dkLCBkb3Q6IHRydWUsIGFic29sdXRlOiB0cnVlIH0pXG4gICAgICB9XG4gICAgICBmZHMgPSBmZHMuY29uY2F0KGYpXG4gICAgfSlcbiAgICBmZHMgPSB1bmlxKGZkcylcbiAgfVxuICBpZiAoZGlycy5sZW5ndGggPiAwKSB7XG4gICAgY2RzID0gdW5pcShjZHMuY29uY2F0KGRpcnMpKVxuICB9XG4gIHJldHVybiB7IGZpbGVEZXBlbmRlbmNpZXM6IGZkcywgY29udGV4dERlcGVuZGVuY2llczogY2RzIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9wcmVwYXJlRm9yQnVpbGQoYXBwLCB2YXJzLCBvcHRpb25zLCBvdXRwdXQsIGNvbXBpbGF0aW9uKSB7XG4vLyAgdHJ5IHtcbiAgICBjb25zdCBsb2cgPSByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2dcbiAgICBjb25zdCBsb2d2ID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndlxuICAgIGxvZ3Yob3B0aW9ucywnX3ByZXBhcmVGb3JCdWlsZCcpXG4gICAgY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG4gICAgY29uc3QgcmVjdXJzaXZlUmVhZFN5bmMgPSByZXF1aXJlKCdyZWN1cnNpdmUtcmVhZGRpci1zeW5jJylcbiAgICB2YXIgd2F0Y2hlZEZpbGVzPVtdXG4gICAgdHJ5IHt3YXRjaGVkRmlsZXMgPSByZWN1cnNpdmVSZWFkU3luYygnLi9hcHAnKS5jb25jYXQocmVjdXJzaXZlUmVhZFN5bmMoJy4vcGFja2FnZXMnKSl9XG4gICAgY2F0Y2goZXJyKSB7aWYoZXJyLmVycm5vID09PSAzNCl7Y29uc29sZS5sb2coJ1BhdGggZG9lcyBub3QgZXhpc3QnKTt9IGVsc2Uge3Rocm93IGVycjt9fVxuICAgIHZhciBjdXJyZW50TnVtRmlsZXMgPSB3YXRjaGVkRmlsZXMubGVuZ3RoXG4gICAgbG9ndihvcHRpb25zLCd3YXRjaGVkRmlsZXM6ICcgKyBjdXJyZW50TnVtRmlsZXMpXG4gICAgdmFyIGRvQnVpbGQgPSB0cnVlXG4gICAgXG4gICAgbG9ndihvcHRpb25zLCdkb0J1aWxkOiAnICsgZG9CdWlsZClcblxuICAgIHZhcnMubGFzdE1pbGxpc2Vjb25kcyA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpXG4gICAgdmFyIGZpbGVzb3VyY2UgPSAndGhpcyBmaWxlIGVuYWJsZXMgY2xpZW50IHJlbG9hZCdcbiAgICBjb21waWxhdGlvbi5hc3NldHNbY3VycmVudE51bUZpbGVzICsgJ0ZpbGVzVW5kZXJBcHBGb2xkZXIubWQnXSA9IHtcbiAgICAgIHNvdXJjZTogZnVuY3Rpb24oKSB7cmV0dXJuIGZpbGVzb3VyY2V9LFxuICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7cmV0dXJuIGZpbGVzb3VyY2UubGVuZ3RofVxuICAgIH1cblxuICAgIGxvZ3Yob3B0aW9ucywnY3VycmVudE51bUZpbGVzOiAnICsgY3VycmVudE51bUZpbGVzKVxuICAgIGxvZ3Yob3B0aW9ucywndmFycy5sYXN0TnVtRmlsZXM6ICcgKyB2YXJzLmxhc3ROdW1GaWxlcylcbiAgICBsb2d2KG9wdGlvbnMsJ2RvQnVpbGQ6ICcgKyBkb0J1aWxkKVxuXG4gICAgaWYgKGN1cnJlbnROdW1GaWxlcyAhPSB2YXJzLmxhc3ROdW1GaWxlcyB8fCBkb0J1aWxkKSB7XG4gICAgICB2YXJzLnJlYnVpbGQgPSB0cnVlXG4gICAgICB2YXIgYnVuZGxlRGlyID0gb3V0cHV0LnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpXG4gICAgICBpZiAoYnVuZGxlRGlyLnRyaW0oKSA9PSAnJykge2J1bmRsZURpciA9ICcuLyd9XG4gICAgICBsb2coYXBwICsgJ0J1aWxkaW5nIEV4dCBidW5kbGUgYXQ6ICcgKyBidW5kbGVEaXIpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFycy5yZWJ1aWxkID0gZmFsc2VcbiAgICB9XG4gICAgdmFycy5sYXN0TnVtRmlsZXMgPSBjdXJyZW50TnVtRmlsZXNcbiAgLy8gfVxuICAvLyBjYXRjaChlKSB7XG4gIC8vICAgY29uc29sZS5sb2coZSlcbiAgLy8gICBjb21waWxhdGlvbi5lcnJvcnMucHVzaCgnX3ByZXBhcmVGb3JCdWlsZDogJyArIGUpXG4gIC8vIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFBQUEsTUFBQSxDQUFBQyxjQUFBLENBQUFDLE9BQUE7RUFBQUMsS0FBQTtBQUFBO0FBQUFELE9BQUEsQ0FBQUUsYUFBQSxHQUFBQSxhQUFBO0FBQUFGLE9BQUEsQ0FBQUcsZUFBQSxHQUFBQSxlQUFBO0FBQUFILE9BQUEsQ0FBQUksZ0JBQUEsR0FBQUEsZ0JBQUE7QUFFTCxTQUFTRCxlQUFlQSxDQUFBLEVBQUc7RUFDaEMsT0FBTztJQUNMRSxTQUFTLEVBQUUsWUFBWTtJQUN2QkMsT0FBTyxFQUFFLElBQUk7SUFDYkMsWUFBWSxFQUFHLEtBQUs7SUFDcEJDLFNBQVMsRUFBRyxJQUFJO0lBQ2hCQyxZQUFZLEVBQUcsQ0FBQztJQUNoQkMsR0FBRyxFQUFFQyxPQUFPLENBQUNELEdBQUcsQ0FBQyxDQUFDO0lBQ2xCRSxPQUFPLEVBQUUsR0FBRztJQUNaQyxZQUFZLEVBQUUsRUFBRTtJQUNoQkMsWUFBWSxFQUFFLENBQUM7SUFDZkMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQkMsdUJBQXVCLEVBQUUsQ0FBQztJQUMxQkMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3JCQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUMsWUFBWTtFQUM3QixDQUFDO0FBQ0g7QUFFTyxTQUFTaEIsYUFBYUEsQ0FBQ2lCLFdBQVcsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUU7RUFDeEQsSUFBSUMsT0FBTyxHQUFHRCxPQUFPLENBQUNDLE9BQU87RUFDN0IsSUFBSUMsSUFBSSxHQUFHQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUNELElBQUk7RUFDdkNBLElBQUksQ0FBQ0QsT0FBTyxFQUFDLDhCQUE4QixDQUFDO0VBQzVDLE1BQU1HLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQU0sQ0FBQztFQUM1QixJQUFJO0lBQUVQLEtBQUs7SUFBRUM7RUFBSyxDQUFD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