UNPKG

@ant-design/tools

Version:
190 lines (188 loc) 6.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _projectHelper = require("./utils/projectHelper"); var path = _interopRequireWildcard(require("path")); var webpack = _interopRequireWildcard(require("webpack")); var _webpackbar = _interopRequireDefault(require("webpackbar")); var _webpackMerge = _interopRequireDefault(require("webpack-merge")); var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin")); var _cssMinimizerWebpackPlugin = _interopRequireDefault(require("css-minimizer-webpack-plugin")); var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin")); var _terserWebpackPlugin = _interopRequireDefault(require("terser-webpack-plugin")); var _CleanUpStatsPlugin = _interopRequireDefault(require("./utils/CleanUpStatsPlugin")); var _fsExtra = require("fs-extra"); var _getBabelCommonConfig = _interopRequireDefault(require("./getBabelCommonConfig")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } const svgRegex = /\.svg(\?v=\d+\.\d+\.\d+)?$/; const svgOptions = { limit: 10000, minetype: 'image/svg+xml' }; const imageOptions = { limit: 10000 }; const getWebpackConfig = (modules, options = {}) => { const { enabledReactCompiler } = options; const pkg = (0, _fsExtra.readJsonSync)((0, _projectHelper.getProjectPath)('package.json')); const babelConfig = (0, _getBabelCommonConfig.default)(modules || false, { enabledReactCompiler: enabledReactCompiler }); babelConfig.plugins.push([(0, _projectHelper.resolve)('babel-plugin-import'), { style: true, libraryName: pkg.name, libraryDirectory: 'components' }]); if (pkg.name !== 'antd') { babelConfig.plugins.push([(0, _projectHelper.resolve)('babel-plugin-import'), { style: 'css', libraryDirectory: 'es', libraryName: 'antd' }, 'other-package-babel-plugin-import']); } if (modules === false) { babelConfig.plugins.push(require.resolve("./replaceLib")); } const config = { devtool: 'source-map', output: { path: (0, _projectHelper.getProjectPath)('./dist/'), filename: '[name].js' }, resolve: { modules: ['node_modules', path.join(__dirname, '../node_modules')], extensions: ['.web.tsx', '.web.ts', '.web.jsx', '.web.js', '.ts', '.tsx', '.js', '.jsx', '.json'], alias: { [pkg.name]: process.cwd() }, fallback: ['child_process', 'cluster', 'dgram', 'dns', 'fs', 'module', 'net', 'readline', 'repl', 'tls'].reduce((acc, name) => ({ ...acc, [name]: false }), {}) }, module: { noParse: [/moment.js/], rules: [{ test: /\.jsx?$/, exclude: /node_modules/, loader: (0, _projectHelper.resolve)('babel-loader'), options: babelConfig }, { test: /\.tsx?$/, use: [{ loader: (0, _projectHelper.resolve)('babel-loader'), options: babelConfig }, { loader: (0, _projectHelper.resolve)('ts-loader'), options: { transpileOnly: true } }] }, { test: /\.css$/, use: [_miniCssExtractPlugin.default.loader, { loader: (0, _projectHelper.resolve)('css-loader'), options: { sourceMap: true } }, { loader: (0, _projectHelper.resolve)('postcss-loader'), options: { postcssOptions: { plugins: ['autoprefixer'] }, sourceMap: true } }] }, { test: svgRegex, loader: (0, _projectHelper.resolve)('url-loader'), options: svgOptions }, { test: /\.(png|jpg|jpeg|gif)(\?v=\d+\.\d+\.\d+)?$/i, loader: (0, _projectHelper.resolve)('url-loader'), options: imageOptions }] }, ignoreWarnings: [{ message: /mini-css-extract-plugin[^]*Conflicting order between:/ }], plugins: [new _caseSensitivePathsWebpackPlugin.default(), new webpack.BannerPlugin(` ${pkg.name} v${pkg.version} Copyright 2015-present, Alipay, Inc. All rights reserved. `), new _webpackbar.default({ name: '🚚 Ant Design Tools', color: '#2f54eb' }), new _CleanUpStatsPlugin.default()], performance: { hints: false } }; if (process.env.RUN_ENV === 'PRODUCTION') { const entry = ['./index']; config.externals = { react: { root: 'React', commonjs2: 'react', commonjs: 'react', amd: 'react' }, 'react-dom': { root: 'ReactDOM', commonjs2: 'react-dom', commonjs: 'react-dom', amd: 'react-dom' } }; config.output.library = pkg.name; config.output.libraryTarget = 'umd'; config.output.globalObject = 'this'; config.optimization = { minimizer: [new _terserWebpackPlugin.default({ parallel: true, minify: _terserWebpackPlugin.default.uglifyJsMinify, terserOptions: { warnings: false } })] }; const uncompressedConfig = (0, _webpackMerge.default)({}, config, { entry: { [pkg.name]: entry }, mode: 'development', plugins: [new webpack.optimize.ModuleConcatenationPlugin(), new _miniCssExtractPlugin.default({ filename: '[name].css' })] }); const prodConfig = (0, _webpackMerge.default)({}, config, { entry: { [`${pkg.name}.min`]: entry }, mode: 'production', plugins: [new webpack.LoaderOptionsPlugin({ minimize: true }), new _miniCssExtractPlugin.default({ filename: '[name].css' })], optimization: { minimize: true, minimizer: [new _cssMinimizerWebpackPlugin.default({})] } }); return [prodConfig, uncompressedConfig]; } return [config]; }; getWebpackConfig.webpack = webpack; getWebpackConfig.svgRegex = svgRegex; getWebpackConfig.svgOptions = svgOptions; getWebpackConfig.imageOptions = imageOptions; var _default = exports.default = getWebpackConfig;