diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/copy-webpack-plugin/dist/writeFile.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/copy-webpack-plugin/dist/writeFile.js')
| -rw-r--r-- | node_modules/copy-webpack-plugin/dist/writeFile.js | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/node_modules/copy-webpack-plugin/dist/writeFile.js b/node_modules/copy-webpack-plugin/dist/writeFile.js new file mode 100644 index 00000000..fc3dc10a --- /dev/null +++ b/node_modules/copy-webpack-plugin/dist/writeFile.js @@ -0,0 +1,153 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = writeFile; + +var _loaderUtils = require('loader-utils'); + +var _loaderUtils2 = _interopRequireDefault(_loaderUtils); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _cacache = require('cacache'); + +var _cacache2 = _interopRequireDefault(_cacache); + +var _serializeJavascript = require('serialize-javascript'); + +var _serializeJavascript2 = _interopRequireDefault(_serializeJavascript); + +var _package = require('../package.json'); + +var _findCacheDir = require('find-cache-dir'); + +var _findCacheDir2 = _interopRequireDefault(_findCacheDir); + +var _promisify = require('./utils/promisify'); + +var _crypto = require('crypto'); + +var _crypto2 = _interopRequireDefault(_crypto); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function writeFile(globalRef, pattern, file) { + var info = globalRef.info, + debug = globalRef.debug, + compilation = globalRef.compilation, + fileDependencies = globalRef.fileDependencies, + written = globalRef.written, + inputFileSystem = globalRef.inputFileSystem, + copyUnmodified = globalRef.copyUnmodified; + + + return (0, _promisify.stat)(inputFileSystem, file.absoluteFrom).then(function (stat) { + // We don't write empty directories + if (stat.isDirectory()) { + return; + } + + // If this came from a glob, add it to the file watchlist + if (pattern.fromType === 'glob') { + fileDependencies.push(file.absoluteFrom); + } + + info('reading ' + file.absoluteFrom + ' to write to assets'); + return (0, _promisify.readFile)(inputFileSystem, file.absoluteFrom).then(function (content) { + if (pattern.transform) { + var transform = function transform(content, absoluteFrom) { + return pattern.transform(content, absoluteFrom); + }; + + if (pattern.cache) { + if (!globalRef.cacheDir) { + globalRef.cacheDir = (0, _findCacheDir2.default)({ name: 'copy-webpack-plugin' }); + } + + var cacheKey = pattern.cache.key ? pattern.cache.key : (0, _serializeJavascript2.default)({ + name: _package.name, + version: _package.version, + pattern: pattern, + hash: _crypto2.default.createHash('md4').update(content).digest('hex') + }); + + return _cacache2.default.get(globalRef.cacheDir, cacheKey).then(function (result) { + return result.data; + }, function () { + return Promise.resolve().then(function () { + return transform(content, file.absoluteFrom); + }).then(function (content) { + return _cacache2.default.put(globalRef.cacheDir, cacheKey, content).then(function () { + return content; + }); + }); + }); + } + + content = transform(content, file.absoluteFrom); + } + + return content; + }).then(function (content) { + if (pattern.toType === 'template') { + info('interpolating template \'' + file.webpackTo + '\' for \'' + file.relativeFrom + '\''); + + // If it doesn't have an extension, remove it from the pattern + // ie. [name].[ext] or [name][ext] both become [name] + if (!_path2.default.extname(file.relativeFrom)) { + file.webpackTo = file.webpackTo.replace(/\.?\[ext\]/g, ''); + } + + file.webpackTo = _loaderUtils2.default.interpolateName({ resourcePath: file.absoluteFrom }, file.webpackTo, { + content: content, + regExp: file.webpackToRegExp, + context: pattern.context + }); + } + + return content; + }).then(function (content) { + if (pattern.transformPath) { + return Promise.resolve(pattern.transformPath(file.webpackTo, file.absoluteFrom)).then(function (newPath) { + file.webpackTo = newPath; + }).then(function () { + return content; + }); + } + + return content; + }).then(function (content) { + var hash = _loaderUtils2.default.getHashDigest(content); + + if (!copyUnmodified && written[file.absoluteFrom] && written[file.absoluteFrom]['hash'] === hash && written[file.absoluteFrom]['webpackTo'] === file.webpackTo) { + info('skipping \'' + file.webpackTo + '\', because it hasn\'t changed'); + return; + } else { + debug('added ' + hash + ' to written tracking for \'' + file.absoluteFrom + '\''); + written[file.absoluteFrom] = { + hash: hash, + webpackTo: file.webpackTo + }; + } + + if (compilation.assets[file.webpackTo] && !file.force) { + info('skipping \'' + file.webpackTo + '\', because it already exists'); + return; + } + + info('writing \'' + file.webpackTo + '\' to compilation assets from \'' + file.absoluteFrom + '\''); + compilation.assets[file.webpackTo] = { + size: function size() { + return stat.size; + }, + source: function source() { + return content; + } + }; + }); + }); +}
\ No newline at end of file |
