12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- const path = require('path');
- const babel = require('@babel/core');
- const fs = require('fs');
- // See require('@babel/plugin-transform-modules-commonjs')
- const esm2cjsPlugin = path.resolve(__dirname, '../../build/babel-plugin-transform-modules-commonjs-ec');
- const removeDEVPlugin = path.resolve(__dirname, '../../build/babel-plugin-transform-remove-dev');
- function run() {
- removeDEV();
- esm2cjs();
- }
- function removeDEV() {
- const suite = makeSuite('removeDEV');
- suite.eachSrcFile(({fileName, filePath}) => {
- let result = babel.transformFileSync(filePath, {
- plugins: [removeDEVPlugin]
- });
- suite.writeToExpectFile(fileName, result.code);
- console.log(`removing dev ${fileName} ...`);
- });
- console.log('All done.');
- }
- function esm2cjs() {
- const suite = makeSuite('esm2cjs');
- suite.eachSrcFile(({fileName, filePath}) => {
- console.log(`transforming to cjs ${fileName} ...`);
- if (/^forbiden/.test(fileName)) {
- try {
- transformSingle();
- throw new Error('Should fail.');
- }
- catch (e) {
- console.log(`${fileName} failed as expected.`);
- }
- }
- else {
- transformSingle();
- }
- function transformSingle() {
- let result = babel.transformFileSync(filePath, {
- plugins: [removeDEVPlugin, esm2cjsPlugin]
- });
- suite.writeToExpectFile(fileName, result.code);
- }
- });
- console.log('All done.');
- }
- const makeSuite = suiteName => {
- const srcDir = path.resolve(__dirname, `./${suiteName}/src`);
- const expectDir = path.resolve(__dirname, `./${suiteName}/expect`);
- return {
- srcDir,
- expectDir,
- eachSrcFile(cb) {
- fs.readdirSync(srcDir).forEach(fileName => {
- if (!/^[^.].*[.]src[.]js$/.test(fileName)) {
- return;
- }
- const filePath = path.resolve(srcDir, fileName);
- cb({fileName, filePath, suiteName, srcDir, expectDir});
- });
- },
- writeToExpectFile(srcFileName, content) {
- let outputPath = path.resolve(expectDir, srcFileName.replace('.src.', '.expect.'));
- fs.writeFileSync(outputPath, content, {encoding:'utf-8'});
- }
- };
- };
- run();
|