UNPKG

rollup-documentation

Version:

rollup-documentation

113 lines (88 loc) 5.44 kB
'use strict'; 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;