UNPKG

@ant-design/tools

Version:
40 lines 1.41 kB
import * as crypto from 'crypto'; import { createTransformer } from 'babel-jest'; import getBabelCommonConfig from "../getBabelCommonConfig"; import rewriteSource from "./rewriteSource"; import pkg from "../../package.json"; const libDir = process.env.LIB_DIR || 'components'; function processDemo({ types: t }) { return { visitor: { ImportDeclaration(path) { rewriteSource(t, path, libDir); } } }; } const preprocessor = { canInstrument: true, process(src, filePath, config, transformOptions) { global.__clearBabelAntdPlugin && global.__clearBabelAntdPlugin(); // eslint-disable-line const babelConfig = getBabelCommonConfig(); babelConfig.plugins = [...(babelConfig.plugins || [])]; if (/\/demo\//.test(filePath)) { babelConfig.plugins.push(processDemo); } babelConfig.plugins.push([require.resolve('babel-plugin-import'), { libraryName: 'antd-mobile', libraryDirectory: '../../../../components' }]); const babelSupport = /\.(t|j)sx?$/.test(filePath); const babelJest = createTransformer(babelConfig); const name = babelSupport ? filePath : 'file.js'; return babelJest.process(src, name, config, transformOptions); }, getCacheKey() { return crypto.createHash('md5').update('\0', 'utf8').update(libDir).update('\0', 'utf8').update(pkg.version).digest('hex'); } }; module.exports = preprocessor;