UNPKG

atool-doc

Version:

Static demo site generator based on atool-build & dora.

106 lines (87 loc) 3.37 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = IndexWebpackPlugin; var _fs = require('fs'); var _ejs = require('ejs'); var _path = require('path'); var _utils = require('./utils'); var _markTwain = require('mark-twain'); var _markTwain2 = _interopRequireDefault(_markTwain); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var root = (0, _path.join)(__dirname, '..'); function addContentToAssets(content, filename, compilation) { var assets = compilation.assets; assets[filename] = { source: function source() { return content; }, size: function size() { return content.length; } }; } function getFileFullPath(file, context) { return (0, _path.join)(context, file); } function getFileContent(file) { return (0, _fs.existsSync)(file) ? (0, _fs.readFileSync)(file, 'utf-8') : false; } function IndexWebpackPlugin(options) { var _fileDependencies$con = _extends({ fileDependencies: ['package.json', 'README.md', 'HISTORY.md', 'CHANGELOG.md'], contextDependencies: [], file: 'index.html', template: (0, _path.join)(root, 'tpl/index.ejs'), title: 'title', params: { link: [] } }, options), fileDependencies = _fileDependencies$con.fileDependencies, contextDependencies = _fileDependencies$con.contextDependencies, file = _fileDependencies$con.file, template = _fileDependencies$con.template, title = _fileDependencies$con.title, params = _fileDependencies$con.params; var apply = function apply(compiler) { compiler.plugin('emit', function (compilation, cb) { var content = (0, _ejs.render)(getFileContent(template), { file: params, README: (0, _utils.marked)(getFileContent('README.md')), CHANGELOG: (0, _utils.marked)(getFileContent('CHANGELOG.md')), HISTORY: (0, _utils.marked)(getFileContent('HISTORY.md')), PKG: JSON.parse(getFileContent('package.json')), alias: compiler.docSet.fileAlias }); addContentToAssets(content, file, compilation); cb(); }); compiler.plugin('compilation', function () { if (!compiler.docSet) { compiler.docSet = { fileAlias: {} }; /* eslint no-param-reassign: "warn"*/ } Object.keys(params.link).forEach(function (name) { var current = getFileContent(compiler.options.entry[params.link[name]]); compiler.docSet.fileAlias[name] = (0, _markTwain2.default)(current).meta[title]; }); }); compiler.plugin('after-compile', function (compilation, cb) { var context = compiler.context; compilation.fileDependencies.push(template, context); fileDependencies.forEach(function (dep) { compilation.fileDependencies.push(getFileFullPath(dep, context)); }); contextDependencies.forEach(function (dep) { compilation.contextDependencies.push(getFileFullPath(dep, context)); }); cb(); }); }; return { apply: apply }; } module.exports = exports['default'];