UNPKG

umi-library

Version:

Library toolkit based on rollup and docz.

164 lines (134 loc) 5.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _doczPluginUmiCss = require("docz-plugin-umi-css"); var _path = require("path"); var _fs = require("fs"); var _lodash = require("lodash"); var _getUserConfig = _interopRequireWildcard(require("./getUserConfig")); var _doczPluginReactExternals = _interopRequireDefault(require("./docz-plugin-react-externals")); var _registerBabel = _interopRequireDefault(require("./registerBabel")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } 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; } const cssModuleRegex = /\.module\.css$/; const lessModuleRegex = /\.module\.less$/; const cwd = process.cwd(); const localUserConfig = JSON.parse((0, _fs.readFileSync)((0, _path.join)(cwd, '.docz', '.umirc.library.json'), 'utf-8')); // register babel for config files (0, _registerBabel.default)({ cwd, only: _getUserConfig.CONFIG_FILES }); const userConfig = _objectSpread({}, localUserConfig, (0, _getUserConfig.default)({ cwd })); if (!userConfig.doc) { userConfig.doc = (0, _lodash.merge)(userConfig.doc || {}); } const isTypescript = (0, _fs.existsSync)((0, _path.join)(cwd, 'tsconfig.json')); var _default = _objectSpread({ typescript: isTypescript, repository: false, theme: require.resolve('docz-theme-umi').replace(/\\/g, '/') }, userConfig.doc, { modifyBabelRc(babelrc, args) { if (typeof userConfig.doc.modifyBabelRc === 'function') { babelrc = userConfig.doc.modifyBabelRc(babelrc, args); } // 需放 class-properties 前面 babelrc.plugins.unshift([require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }]); // Support extraBabelPresets and extraBabelPlugins babelrc.presets = [...babelrc.presets, ...(userConfig.extraBabelPresets || [])]; babelrc.plugins = [...babelrc.plugins, ...(userConfig.extraBabelPlugins || [])]; return babelrc; }, modifyBundlerConfig(config, dev, args) { if (userConfig.doc.modifyBundlerConfig) { config = userConfig.doc.modifyBundlerConfig(config, dev, args); } if (!dev) { // do not generate doc sourcemap config.devtool = false; // support disable minimize via process.env.COMPRESS if (process.env.COMPRESS === 'none') { config.optimization.minimize = false; } } // 确保只有一个版本的 docz,否则 theme 会出错,因为 ComponentProvider 的 context 不是同一个 config.resolve.alias = config.resolve.alias || {}; config.resolve.alias.docz = (0, _path.dirname)(require.resolve('docz/package.json')); // 透传 BIGFISH_VERSION 环境变量 config.plugins.push(new (require('webpack').DefinePlugin)({ 'process.env.BIGFISH_VERSION': JSON.stringify(process.env.BIGFISH_VERSION) })); // fallback resolve 路径 config.resolve.modules.push((0, _path.join)(__dirname, '../node_modules')); config.resolveLoader.modules.push((0, _path.join)(__dirname, '../node_modules')); return config; }, plugins: [...(userConfig.doc.plugins || []), (0, _doczPluginReactExternals.default)(), ...(userConfig.cssModules ? [// .css (0, _doczPluginUmiCss.css)({ preprocessor: 'postcss', ruleOpts: { exclude: /node_modules\/.*\.css$/ }, cssmodules: true }), (0, _doczPluginUmiCss.css)({ preprocessor: 'postcss', ruleOpts: { test: /node_modules\/.*\.css$/ }, cssmodules: false }), // .less (0, _doczPluginUmiCss.css)({ preprocessor: 'less', ruleOpts: { exclude: /node_modules\/.*\.less$/ }, cssmodules: true, loaderOpts: { javascriptEnabled: true } }), (0, _doczPluginUmiCss.css)({ preprocessor: 'less', ruleOpts: { test: /node_modules\/.*\.less$/ }, cssmodules: false, loaderOpts: { javascriptEnabled: true } })] : [// .css (0, _doczPluginUmiCss.css)({ preprocessor: 'postcss', ruleOpts: { exclude: cssModuleRegex }, cssmodules: false }), (0, _doczPluginUmiCss.css)({ preprocessor: 'postcss', ruleOpts: { test: cssModuleRegex }, cssmodules: true }), // .less (0, _doczPluginUmiCss.css)({ preprocessor: 'less', ruleOpts: { exclude: lessModuleRegex }, cssmodules: false, loaderOpts: { javascriptEnabled: true } }), (0, _doczPluginUmiCss.css)({ preprocessor: 'less', ruleOpts: { test: lessModuleRegex }, cssmodules: true, loaderOpts: { javascriptEnabled: true } })])] }); exports.default = _default;