rollup-documentation
Version:
rollup-documentation
113 lines (88 loc) • 5.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.webpackMerge = exports.config = exports.jsonExtension = exports.wrapperBase = exports.layoutRendererBase = exports.srcBase = exports.styleguideBase = 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; }; /* eslint-disable global-require */
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);
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; }
/** we decide either to use the package.json from react or the one from the current working dir
* this will make the configured both, within project and when imported
*/
var pkgBase = exports.pkgBase = _fs2.default.existsSync(_path2.default.join(process.cwd(), 'package.json')) ? _path2.default.join(process.cwd()) : _path2.default.join(__dirname, '..');
var pkg = exports.pkg = require(_path2.default.join(pkgBase, 'package.json'));
var styleguideBase = exports.styleguideBase = _fs2.default.existsSync(_path2.default.join(process.cwd(), 'styleguide')) ? _path2.default.join(process.cwd(), 'styleguide') : _path2.default.join(__dirname);
var srcBase = exports.srcBase = _fs2.default.existsSync(_path2.default.join(process.cwd(), 'src')) ? _path2.default.join(process.cwd(), 'src') : _path2.default.join(__dirname, '../lib');
var layoutRendererBase = exports.layoutRendererBase = _fs2.default.existsSync(_path2.default.join(process.cwd(), 'styleguide/components/LayoutRenderer.js')) ? _path2.default.join(process.cwd(), 'styleguide/components/LayoutRenderer.js') : _path2.default.join(__dirname, '../lib/components/LayoutRenderer.js');
var wrapperBase = exports.wrapperBase = _fs2.default.existsSync(_path2.default.join(process.cwd(), 'styleguide/components/Wrapper.js')) ? _path2.default.join(process.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(process.cwd(), 'styleguide/styleguide.ext.json')) ? require(_path2.default.join(process.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 config = exports.config = _extends({
styleguideDir: 'public',
components: 'src/components/**/*.js',
previewDelay: 500,
skipComponentsWithoutExample: false,
showCode: false,
showUsage: true,
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>\n <head>\n <meta charset="UTF-8">\n <title>' + title + '</title>\n ' + (0, _miniHtmlWebpackPlugin.generateCSSReferences)(css, publicPath) + '\n </head>\n <body>\n <div id="rsg-root"></div>\n ' + (0, _miniHtmlWebpackPlugin.generateJSReferences)(js, publicPath) + '\n </body>\n </html>';
},
theme: {},
title: pkg.description || pkg.name,
verbose: false,
webpackConfig: {
plugins: [new _webpack2.default.SourceMapDevToolPlugin({
filename: '[file].map',
exclude: ['node_modules/**/*.js']
})],
resolve: {
alias: _defineProperty({}, pkg.name, _path2.default.resolve(pkgBase))
},
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'
}]
}
},
styleguideComponents: {
StyleGuideRenderer: layoutRendererBase,
Wrapper: wrapperBase
},
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);
/**
* export webpack merge util
* @type {merge}
*/
var webpackMerge = exports.webpackMerge = function webpackMerge() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _webpackMerge2.default.apply(undefined, [config.webpackConfig].concat(args));
};
exports.default = config;