diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 000000000..a089167a7 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: [ + ['@babel/plugin-proposal-decorators', { legacy: true }], + [require.resolve('@babel/plugin-proposal-class-properties'), { loose: true }], + ], +}; \ No newline at end of file diff --git a/modules/code-generator/babel.config.js b/modules/code-generator/babel.config.js new file mode 100644 index 000000000..c5986f2bc --- /dev/null +++ b/modules/code-generator/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config'); \ No newline at end of file diff --git a/modules/code-generator/babelTransform.js b/modules/code-generator/babelTransform.js deleted file mode 100644 index 6f5af94ff..000000000 --- a/modules/code-generator/babelTransform.js +++ /dev/null @@ -1,22 +0,0 @@ -const babelJest = require('babel-jest'); -const getBabelConfig = require('build-scripts-config/lib/config/babel/index.js'); -const formatWinPath = require('build-scripts-config/lib/config/jest/formatWinPath'); -const babelConfig = getBabelConfig(); - -babelConfig.plugins.push(['@babel/plugin-proposal-class-properties', { loose: true }]); - -const jestBabelConfig = { - ...babelConfig, - presets: babelConfig.presets.map((preset) => { - if (Array.isArray(preset) && formatWinPath(preset[0]).indexOf('@babel/preset-env') > -1) { - return [preset[0], { - targets: { - node: 'current', - }, - }]; - } - return preset; - }), -}; - -module.exports = babelJest.createTransformer(jestBabelConfig); \ No newline at end of file diff --git a/modules/code-generator/jest.config.js b/modules/code-generator/jest.config.js index 5c0fbe40a..0f908143d 100644 --- a/modules/code-generator/jest.config.js +++ b/modules/code-generator/jest.config.js @@ -1,8 +1,4 @@ module.exports = { - transform: { - '^.+\\.(js|jsx|ts|tsx)$': './babelTransform.js', - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': 'build-scripts-config/lib/config/jest/fileTransform.js', - }, preset: 'ts-jest', testEnvironment: 'node', transformIgnorePatterns: ['/node_modules/(?!core-js)/'], diff --git a/packages/designer/babel.config.js b/packages/designer/babel.config.js new file mode 100644 index 000000000..c5986f2bc --- /dev/null +++ b/packages/designer/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config'); \ No newline at end of file diff --git a/packages/designer/babelTransform.js b/packages/designer/babelTransform.js deleted file mode 100644 index 6f5af94ff..000000000 --- a/packages/designer/babelTransform.js +++ /dev/null @@ -1,22 +0,0 @@ -const babelJest = require('babel-jest'); -const getBabelConfig = require('build-scripts-config/lib/config/babel/index.js'); -const formatWinPath = require('build-scripts-config/lib/config/jest/formatWinPath'); -const babelConfig = getBabelConfig(); - -babelConfig.plugins.push(['@babel/plugin-proposal-class-properties', { loose: true }]); - -const jestBabelConfig = { - ...babelConfig, - presets: babelConfig.presets.map((preset) => { - if (Array.isArray(preset) && formatWinPath(preset[0]).indexOf('@babel/preset-env') > -1) { - return [preset[0], { - targets: { - node: 'current', - }, - }]; - } - return preset; - }), -}; - -module.exports = babelJest.createTransformer(jestBabelConfig); \ No newline at end of file diff --git a/packages/designer/jest.config.js b/packages/designer/jest.config.js index 4d6d29173..788c0ac79 100644 --- a/packages/designer/jest.config.js +++ b/packages/designer/jest.config.js @@ -4,10 +4,6 @@ const esModules = [].join('|'); const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); const jestConfig = { - transform: { - '^.+\\.(js|jsx|ts|tsx)$': './babelTransform.js', - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': 'build-scripts-config/lib/config/jest/fileTransform.js', - }, // transform: { // '^.+\\.[jt]sx?$': 'babel-jest', // // '^.+\\.(ts|tsx)$': 'ts-jest', diff --git a/packages/engine/babel.config.js b/packages/engine/babel.config.js new file mode 100644 index 000000000..c5986f2bc --- /dev/null +++ b/packages/engine/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config'); \ No newline at end of file diff --git a/packages/engine/build.plugin.js b/packages/engine/build.plugin.js index 2881eb3ef..5c4ab7bfb 100644 --- a/packages/engine/build.plugin.js +++ b/packages/engine/build.plugin.js @@ -25,24 +25,6 @@ const releaseVersion = getVersion(); module.exports = ({ context, onGetWebpackConfig }) => { onGetWebpackConfig((config) => { - ['jsx', 'tsx'].forEach((rule) => { - config.module - .rule(rule) - .exclude.clear() - .add(/node_modules(?!(.+_component_demo|.+build-plugin-component))/) - .end() - .use('babel-loader') - .tap((options) => { - const { plugins = [] } = options; - return { - ...options, - plugins: [ - ...plugins, - ['@babel/plugin-proposal-class-properties', { loose: true }], - ], - }; - }); - }); config.resolve .plugin('tsconfigpaths') .use(TsconfigPathsPlugin, [{ diff --git a/packages/ignitor/babel.config.js b/packages/ignitor/babel.config.js new file mode 100644 index 000000000..c5986f2bc --- /dev/null +++ b/packages/ignitor/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config'); \ No newline at end of file diff --git a/packages/ignitor/build.plugin.js b/packages/ignitor/build.plugin.js index 308432796..ffa1d4957 100644 --- a/packages/ignitor/build.plugin.js +++ b/packages/ignitor/build.plugin.js @@ -6,26 +6,6 @@ const { version } = lernaConfig; module.exports = ({ context, onGetWebpackConfig }) => { onGetWebpackConfig((config) => { - ['jsx', 'tsx'].forEach((rule) => { - config.module - .rule(rule) - .exclude.clear() - .add(/node_modules(?!(.+_component_demo|.+build-plugin-component))/) - .end() - .use('babel-loader') - .tap((options) => { - const { plugins = [] } = options; - console.log('plugins', plugins); - return { - ...options, - plugins: [ - ...plugins, - ['@babel/plugin-proposal-class-properties', { loose: true }], - ], - }; - }); - }); - config.resolve.plugin('tsconfigpaths').use(TsconfigPathsPlugin, [ { configFile: './tsconfig.json', diff --git a/packages/ignitor/jest.config.js b/packages/ignitor/jest.config.js new file mode 100644 index 000000000..788c0ac79 --- /dev/null +++ b/packages/ignitor/jest.config.js @@ -0,0 +1,47 @@ +const fs = require('fs'); +const { join } = require('path'); +const esModules = [].join('|'); +const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); + +const jestConfig = { + // transform: { + // '^.+\\.[jt]sx?$': 'babel-jest', + // // '^.+\\.(ts|tsx)$': 'ts-jest', + // // '^.+\\.(js|jsx)$': 'babel-jest', + // }, + // testMatch: ['**/node-children.test.ts'], + // testMatch: ['**/plugin-manager.test.ts'], + // testMatch: ['**/history/history.test.ts'], + // testMatch: ['**/document-model.test.ts'], + // testMatch: ['**/prop.test.ts'], + // testMatch: ['(/tests?/.*(test))\\.[jt]s$'], + transformIgnorePatterns: [ + `/node_modules/(?!${esModules})/`, + ], + setupFiles: ['./tests/fixtures/unhandled-rejection.ts'], + moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], + collectCoverage: false, + collectCoverageFrom: [ + 'src/**/*.ts', + '!src/**/*.d.ts', + '!src/icons/**', + '!src/locale/**', + '!src/builtin-simulator/utils/**', + '!src/plugin/sequencify.ts', + '!src/document/node/exclusive-group.ts', + '!src/document/node/props/value-to-source.ts', + '!src/builtin-simulator/live-editing/live-editing.ts', + '!src/designer/offset-observer.ts', + '!src/designer/clipboard.ts', + '!src/designer/scroller.ts', + '!src/builtin-simulator/host.ts', + '!**/node_modules/**', + '!**/vendor/**', + ], +}; + +// 只对本仓库内的 pkg 做 mapping +jestConfig.moduleNameMapper = {}; +jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '/../$1/src'; + +module.exports = jestConfig; \ No newline at end of file diff --git a/packages/rax-simulator-renderer/babel.config.js b/packages/rax-simulator-renderer/babel.config.js new file mode 100644 index 000000000..c5986f2bc --- /dev/null +++ b/packages/rax-simulator-renderer/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config'); \ No newline at end of file diff --git a/packages/rax-simulator-renderer/build.plugin.js b/packages/rax-simulator-renderer/build.plugin.js index 1c8604e63..d613f1f56 100644 --- a/packages/rax-simulator-renderer/build.plugin.js +++ b/packages/rax-simulator-renderer/build.plugin.js @@ -1,24 +1,5 @@ module.exports = ({ onGetWebpackConfig }) => { onGetWebpackConfig((config) => { - ['jsx', 'tsx'].forEach((rule) => { - config.module - .rule(rule) - .exclude.clear() - .add(/node_modules(?!(.+_component_demo|.+build-plugin-component))/) - .end() - .use('babel-loader') - .tap((options) => { - const { plugins = [] } = options; - console.log('plugins', plugins); - return { - ...options, - plugins: [ - ...plugins, - ['@babel/plugin-proposal-class-properties', { loose: true }], - ], - }; - }); - }); config.performance.hints(false); }); }; diff --git a/packages/react-simulator-renderer/babel.config.js b/packages/react-simulator-renderer/babel.config.js new file mode 100644 index 000000000..c5986f2bc --- /dev/null +++ b/packages/react-simulator-renderer/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config'); \ No newline at end of file diff --git a/packages/react-simulator-renderer/build.plugin.js b/packages/react-simulator-renderer/build.plugin.js index 1c8604e63..d613f1f56 100644 --- a/packages/react-simulator-renderer/build.plugin.js +++ b/packages/react-simulator-renderer/build.plugin.js @@ -1,24 +1,5 @@ module.exports = ({ onGetWebpackConfig }) => { onGetWebpackConfig((config) => { - ['jsx', 'tsx'].forEach((rule) => { - config.module - .rule(rule) - .exclude.clear() - .add(/node_modules(?!(.+_component_demo|.+build-plugin-component))/) - .end() - .use('babel-loader') - .tap((options) => { - const { plugins = [] } = options; - console.log('plugins', plugins); - return { - ...options, - plugins: [ - ...plugins, - ['@babel/plugin-proposal-class-properties', { loose: true }], - ], - }; - }); - }); config.performance.hints(false); }); };