@yeutech-lab/rollup-umd-documentation
Version:
Quickly build awesome documentation for your rollup-umd project.
230 lines (193 loc) • 16.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.config = exports.yeutechFavicon = exports.webpackMerge = exports.jsonExtension = exports.wrapperBase = exports.layoutRendererBase = exports.srcBase = exports.styleguideBase = exports.licenseBase = exports.pkg = exports.pkgBase = undefined;
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 = createConfig;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _miniHtmlWebpackPlugin = require('mini-html-webpack-plugin');
var _webpackMerge = require('webpack-merge');
var _webpackMerge2 = _interopRequireDefault(_webpackMerge);
var _parseAuthor = require('parse-author');
var _parseAuthor2 = _interopRequireDefault(_parseAuthor);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } /* eslint-disable global-require */
var cwd = process.cwd();
var pkgBase = exports.pkgBase = _fs2.default.existsSync(_path2.default.join(cwd, 'package.json')) ? _path2.default.join(cwd) : _path2.default.join(__dirname, '..');
var pkgDoc = {};
var pkgDocSupposedPath = _path2.default.join(__dirname, '../package.json');
if (_fs2.default.existsSync(pkgDocSupposedPath)) {
pkgDoc = require(pkgDocSupposedPath);
}
var pkg = exports.pkg = require(_path2.default.join(pkgBase, 'package.json'));
var licenseBase = exports.licenseBase = _fs2.default.existsSync(_path2.default.join(cwd, 'LICENSE.md')) ? _path2.default.join(cwd, 'LICENSE.md') : _path2.default.join(__dirname, '../LICENSE.md');
var license = pkgBase.license; // eslint-disable-line prefer-destructuring
if (_fs2.default.existsSync(licenseBase)) {
license = _fs2.default.readFileSync(licenseBase, { encoding: 'utf8' }).split('\n')[0]; // eslint-disable-line prefer-destructuring
} else {
console.error('LICENSE.md is missing');
}
var styleguideBase = exports.styleguideBase = _fs2.default.existsSync(_path2.default.join(cwd, 'styleguide')) ? _path2.default.join(cwd, 'styleguide') : _path2.default.join(__dirname);
var srcBase = exports.srcBase = _fs2.default.existsSync(_path2.default.join(cwd, 'src')) ? _path2.default.join(cwd, 'src') : _path2.default.join(__dirname, '../lib');
var layoutRendererBase = exports.layoutRendererBase = _fs2.default.existsSync(_path2.default.join(cwd, 'styleguide/components/LayoutRenderer.js')) ? _path2.default.join(cwd, 'styleguide/components/LayoutRenderer.js') : _path2.default.join(__dirname, '../lib/components/LayoutRenderer.js');
var wrapperBase = exports.wrapperBase = _fs2.default.existsSync(_path2.default.join(cwd, 'styleguide/components/Wrapper.js')) ? _path2.default.join(cwd, 'styleguide/components/Wrapper.js') : _path2.default.join(__dirname, '../lib/components/Wrapper.js');
/* eslint-disable no-nested-ternary */
var jsonExtension = exports.jsonExtension = _fs2.default.existsSync(_path2.default.join(cwd, 'styleguide/styleguide.ext.json')) ? require(_path2.default.join(cwd, 'styleguide/styleguide.ext.json')) : _fs2.default.existsSync(_path2.default.join(__dirname, '../styleguide/styleguide.ext.json')) ? require(_path2.default.join(__dirname, '../styleguide/styleguide.ext.json')) : {};
var preloaders = {
yeutech: require('./preloaders/yeutech')
};
/**
* export webpack merge util
* @type {merge}
*/
var webpackMerge = exports.webpackMerge = _webpackMerge2.default;
var yeutechFavicon = exports.yeutechFavicon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC\n' + 'HUlEQVQ4jXWRP0jVcRTFP/f+vu+9fNrDpEjBqCVoEGsocWmJ/iKZEDWEU38QEocwWsSWmmpyrIjG\n' + 'sL9QgxThUA0O1aKDJIWYmv/ylT7z/ft9b4OK+nrvwF3uOZx7LkcogcFjJxSRFhP5VP+mb6yUTksR\n' + 'mO0BekSkY7DpdEldUWLwyFGHWSdmtcBF4EApA3m+tzm6u/J3RSziPSKgCs7Vo/oa1QTOgeoznGvH\n' + 'uSzOgXP8nI34mV9BymXzGp9Y2Pp017bF7ZHAdDV+FZBYPyMtQB2QDz1+ZlL96Ljciye474amdy6E\n' + 'xsuR5N+euuo5X51YdsH/SZ0h+5YW1H8fjfgfU24s6+XFzZEHPviQ+2yNkYbhZCZ2fHi+qnY+U5ZP\n' + 'lOV8PBqqqGCi5LKBnxyLhd++RiW5EIg3uWbIQH/ui8naiY5Y+8mMad+yBYiD/TVJf6gm6UkJs1Mx\n' + 'XUw7TVtA2oL3eZOm66lHKQAH0Fl2VbOe6JrZUs7xbrRaJ6bLORyb1ZzfVJYrUqPFVay78PF0XpX1\n' + 'kCtKaAyRltvllxVAu+JtGmAXBA4WGhhSuAJQb9LtV1tSsLhil4CZDZMCWPKb0s6v8QaV3jjfFW9T\n' + 'B5IGzmxUhiYNQK+HLQCCvRW4AmQ3pEuvcEXQHNyIZkwf7ggyrWcrxlN59NS5ZO/Hov8UW74K72RD\n' + '5K5icwpPBAaK6aCgkgIMRcXfWvSuv/XP43wp0T84kNcr9/KNuQAAAABJRU5ErkJggg==';
var defaultOptions = {
lang: 'en',
preloader: 'yeutech',
favicon: yeutechFavicon
};
var config = exports.config = createConfig();
function createConfig() {
var _alias;
var userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var userWebpackConfig = userConfig.webpackConfig,
restUserConfig = _objectWithoutProperties(userConfig, ['webpackConfig']);
var opts = _extends({}, defaultOptions, options);
return _extends({
serverPort: process.env.NODE_PORT ? parseInt(process.env.NODE_PORT, 10) : 6060, // eslint-disable-line radix
styleguideDir: 'public',
components: 'src/components/**/[A-Z]*.js',
previewDelay: 500,
skipComponentsWithoutExample: false,
exampleMode: 'collapse',
usageMode: 'expand',
showSidebar: true,
styles: {},
template: function template(_ref) {
var css = _ref.css,
js = _ref.js,
title = _ref.title,
publicPath = _ref.publicPath;
return '<!DOCTYPE html>\n <html' + (opts.lang && ' lang="' + opts.lang + '"') + '>\n <head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <meta name="description" content="' + pkg.description + '">\n ' + (pkg.keywords && pkg.keywords.length > 0 ? '<meta name="keywords" content="' + pkg.keywords.join(',') + '">' : '') + '\n <meta name="author" content="' + (0, _parseAuthor2.default)(pkg.author).name + '">\n ' + (license ? '<meta name="copyright" content="' + license + '" />' : '') + '\n ' + (pkg.contributor && pkg.contributor.length > 0 ? '<meta name="contributor" content="' + pkg.contributor.map(function (c) {
return (0, _parseAuthor2.default)(c).name;
}).join(',') + '">' : '') + '\n ' + (pkg.private === undefined ? '<meta name="robots" content="index,follow"/>' : '' /* undefined means the package is public */) + '\n ' + (pkg.private === false ? '<meta name="robots" content="nofollow"/>' : '<meta name="robots" content="noindex, nofollow"/>' /* false means release in private, true means never released */) + '\n ' + (pkg.name !== pkgDoc.name ? '<meta name="rollup-documentation-version" content="' + pkgDoc.version + '">\n<meta name="version" content="' + pkg.version + '">' : '<meta name="version" content="' + pkg.version + '">') + '\n ' + (opts.favicon ? '<link rel="icon" type="image/x-icon" href="' + opts.favicon + '">' : '') + '\n <link href="https://fonts.googleapis.com/css?family=Quicksand" rel="stylesheet">\n <title>' + title + '</title>\n ' + (0, _miniHtmlWebpackPlugin.generateCSSReferences)(css, publicPath) + '\n </head>\n <body>\n <div id="rsg-root">' + preloaders[opts.preloader] + '</div>\n ' + (0, _miniHtmlWebpackPlugin.generateJSReferences)(js, publicPath) + '\n </body>\n </html>';
},
theme: {},
title: pkg.name,
verbose: false,
version: pkg.version,
webpackConfig: webpackMerge({
plugins: [new _webpack2.default.SourceMapDevToolPlugin({
filename: '[file].map',
exclude: ['node_modules/**/*.js']
})],
resolve: {
alias: (_alias = {
$PACKAGE_NAME: _path2.default.resolve(pkgBase)
}, _defineProperty(_alias, pkg.name, _path2.default.resolve(pkgBase)), _defineProperty(_alias, 'styleguide', _path2.default.resolve(styleguideBase)), _alias)
},
module: {
rules: [
// Babel loader, will use your project’s .babelrc
{
test: /\.jsx?$/,
exclude: /node_modules/,
include: [_path2.default.resolve(srcBase), _path2.default.resolve(styleguideBase)],
loader: 'babel-loader'
}, {
test: /\.css$/,
use: ['style-loader', 'css-loader']
}, {
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url-loader?limit=10000&mimetype=application/font-woff'
}, {
test: /\.(ttf|otf|eot|svg)(\?v=[a-z0-9]\.[a-z0-9]\.[a-z0-9])?$/,
include: /node_modules/,
use: [{
loader: 'file-loader',
options: {
outputPath: 'fonts',
publicPath: 'fonts'
}
}]
}]
}
}, userWebpackConfig),
styleguideComponents: {
// components
StyleGuideRenderer: layoutRendererBase,
Wrapper: wrapperBase,
// rsg-bs-components
ArgumentRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Argument/ArgumentRenderer.js'),
ArgumentsRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Arguments/ArgumentsRenderer.js'),
CodeRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Code/CodeRenderer.js'),
ComponentsRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Components/ComponentsRenderer.js'),
ComponentsList: _path2.default.join(__dirname, '../lib/rsg-bs-components/ComponentsList/ComponentsList.js'),
ComponentsListRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/ComponentsList/ComponentsListRenderer.js'),
Editor: _path2.default.join(__dirname, '../lib/rsg-bs-components/Editor/Editor.js'),
EditorLoaderRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Editor/EditorLoaderRenderer.js'),
ErrorRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Error/ErrorRenderer.js'),
ExamplePlaceholderRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/ExamplePlaceholder/ExamplePlaceholderRenderer.js'),
ExamplesRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Examples/ExamplesRenderer.js'),
HeadingRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Heading/HeadingRenderer.js'),
LinkRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Link/LinkRenderer.js'),
LogoRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Logo/LogoRenderer.js'),
Markdown: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown'),
Blockquote: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Blockquote'),
BlockquoteRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Blockquote/BlockquoteRenderer.js'),
Checkbox: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Checkbox'),
CheckboxRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Checkbox/CheckboxRenderer.js'),
Hr: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Hr'),
HrRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Hr/HrRenderer.js'),
JsDoc: _path2.default.join(__dirname, '../lib/rsg-bs-components/JsDoc'),
List: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/List'),
ListRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/List/ListRenderer.js'),
MarkdownHeading: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/MarkdownHeading'),
MarkdownHeadingRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/MarkdownHeading/MarkdownHeadingRenderer.js'),
Pre: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Pre'),
PreRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Pre/PreRenderer.js'),
TableHeadRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Table/TableHeadRenderer.js'),
TableBodyRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Table/TableBodyRenderer.js'),
TableRowRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Table/TableRowRenderer.js'),
TableCellRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Markdown/Table/TableCellRenderer.js'),
MessageRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Message/MessageRenderer.js'),
MethodsRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Methods/MethodsRenderer.js'),
NameRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Name/NameRenderer.js'),
ParaRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Para/ParaRenderer.js'),
PathlineRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Pathline/PathlineRenderer.js'),
PlaygroundRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Playground/PlaygroundRenderer.js'),
PlaygroundErrorRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/PlaygroundError/PlaygroundErrorRenderer.js'),
ReactComponentRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/ReactComponent/ReactComponentRenderer.js'),
RibbonRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Ribbon/RibbonRenderer.js'),
SectionRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Section/SectionRenderer.js'),
SectionHeadingRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/SectionHeading/SectionHeadingRenderer.js'),
SectionsRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Sections/SectionsRenderer.js'),
slots: _path2.default.join(__dirname, '../lib/rsg-bs-components/slots'),
TabButtonRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/TabButton/TabButtonRenderer.js'),
TableRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Table/TableRenderer.js'),
TableOfContents: _path2.default.join(__dirname, '../lib/rsg-bs-components/TableOfContents/TableOfContents'),
TableOfContentsRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/TableOfContents/TableOfContentsRenderer.js'),
TextRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Text/TextRenderer.js'),
ToolbarButtonRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/ToolbarButton/ToolbarButtonRenderer.js'),
TypeRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Type/TypeRenderer.js'),
Usage: _path2.default.join(__dirname, '../lib/rsg-bs-components/Usage/Usage.js'),
VersionRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Version/VersionRenderer.js'),
WelcomeRenderer: _path2.default.join(__dirname, '../lib/rsg-bs-components/Welcome/WelcomeRenderer.js')
},
getComponentPathLine: function getComponentPathLine(componentPath) {
var name = _path2.default.basename(componentPath, '.js');
var dir = name === 'index' ? _path2.default.dirname(componentPath) : _path2.default.dirname(componentPath) + '/' + name;
name = name === 'index' ? _path2.default.basename(dir) : name;
return 'import ' + name + ' from \'' + pkg.name + '/' + dir.replace(/^src\//, 'lib/') + '\';';
}
}, jsonExtension, restUserConfig);
}