UNPKG

atool-doc

Version:

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

143 lines (104 loc) 5.36 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 = function (source, asset, dest, cwd, tpl, config) { var _extends2; var pkg = require((0, _path.join)(cwd, 'package.json')); var commonConfig = (0, _getWebpackCommonConfig2.default)({ cwd: cwd, devtool: '#inline-cheap-module-source-map' }); var customConfigPath = (0, _path.join)(cwd, config); var webpackConfig = (0, _fs.existsSync)(customConfigPath) ? (0, _mergeCustomConfig2.default)(commonConfig, customConfigPath, 'development') : commonConfig; var entry = getEntry(source); webpackConfig.entry = entry; webpackConfig.output.path = (0, _path.join)(cwd, dest); webpackConfig.cwd = cwd; webpackConfig.demoSource = source; webpackConfig.resolve.root = cwd; webpackConfig.resolve.alias = _extends((_extends2 = {}, _defineProperty(_extends2, pkg.name + '$', (0, _path.join)(cwd, pkg.main || 'index.js')), _defineProperty(_extends2, pkg.name, cwd), _extends2), webpackConfig.resolve.alias); webpackConfig.resolve.modulesDirectories.push((0, _path.join)(root, 'node_modules')); webpackConfig.resolveLoader.modulesDirectories.push((0, _path.join)(root, 'node_modules')); webpackConfig.module.loaders = webpackConfig.module.loaders.map(function (i) { if (i.loader) { return _extends({}, i, { loader: i.loader.replace(/^.*extract-text-webpack-plugin(@\d+(\.\d+)+)?\/loader.js((?!!).)*!/, 'style!') }); } if (i.loaders) { return _extends({}, i, { loaders: i.loaders.map(function (item) { return item.replace(/^.*extract-text-webpack-plugin(@\d+(\.\d+)+)?\/loader.js((?!!).)*!/, 'style!'); }) }); } return i; }); webpackConfig.module.preLoaders = webpackConfig.module.preLoaders || []; webpackConfig.module.preLoaders.push({ test: /\.js$/, loader: 'source-map-loader' }); webpackConfig.module.preLoaders.push({ test: /\.md$/, loader: 'babel?' + JSON.stringify(webpackConfig.babel) + '!' + (0, _path.join)(__dirname, './loaders/md-loader') + '?template=' + tpl, include: _path2.default.join(cwd, source) }); webpackConfig.module.preLoaders.push({ test: /\.(jsx|js)$/, loader: 'babel?' + JSON.stringify(webpackConfig.babel) + '!' + (0, _path.join)(__dirname, './loaders/js-loader') + '?template=' + tpl, include: _path2.default.join(cwd, source) }); var link = {}; Object.keys(entry).forEach(function (key) { link[_path2.default.relative(source, key)] = key; }); webpackConfig.plugins = webpackConfig.plugins.filter(function (plugin) { return !(plugin instanceof _dependencies.ExtractTextPlugin); }).concat(new _webpack.ProgressPlugin(function (percentage, msg) { var stream = process.stderr; if (stream.isTTY && percentage < 0.71) { stream.cursorTo(0); stream.write('\uD83D\uDCE6 ' + msg); stream.clearLine(1); } else if (percentage === 1) { console.log('\nwebpack: bundle build is now finished.'); } }), new _copyWebpackPlugin2.default([{ from: asset, to: asset }]), new _indexWebpackPlugin2.default({ params: { link: link }, title: 'title' })); webpackConfig.externals = {}; return webpackConfig; }; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fs = require('fs'); var _getWebpackCommonConfig = require('atool-build/lib/getWebpackCommonConfig'); var _getWebpackCommonConfig2 = _interopRequireDefault(_getWebpackCommonConfig); var _mergeCustomConfig = require('atool-build/lib/mergeCustomConfig'); var _mergeCustomConfig2 = _interopRequireDefault(_mergeCustomConfig); var _webpack = require('atool-build/lib/webpack'); var _dependencies = require('atool-build/lib/dependencies'); var _glob = require('glob'); var _glob2 = _interopRequireDefault(_glob); var _copyWebpackPlugin = require('copy-webpack-plugin'); var _copyWebpackPlugin2 = _interopRequireDefault(_copyWebpackPlugin); var _indexWebpackPlugin = require('./index-webpack-plugin'); var _indexWebpackPlugin2 = _interopRequireDefault(_indexWebpackPlugin); 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; } var root = _path2.default.join(__dirname, '..'); var getDemoFiles = function getDemoFiles(dir) { return _glob2.default.sync((0, _path.join)(dir, '**/*.{js,jsx,html,md}')); }; var getEntry = function getEntry(source) { var files = getDemoFiles(source); var entry = {}; files.forEach(function (file) { var ext = _path2.default.extname(file); var name = _path2.default.basename(file, ext); var pathWithoutExt = (0, _path.join)(_path2.default.dirname(file), name); if (ext === '.md' || (ext === '.js' || ext === '.jsx') && files.indexOf(pathWithoutExt + '.html') !== -1) { entry[pathWithoutExt] = file; } }); return entry; }; module.exports = exports['default'];