wix-style-react
Version:
wix-style-react
100 lines (95 loc) • 2.63 kB
JavaScript
/* eslint no-console: 0 */
const ProgressBar = require('progress');
const tasks = [
{
task: () => require('./tasks/clean-dist'),
description: 'cleaned ./dist',
},
{
task: () => require('./tasks/transpile-src'),
description: '** dist/cjs & dist/esm & dist/types',
},
{
task: () => require('./tasks/copy-d-ts'),
description: '** src/**/*.d.ts => dist/types',
},
{
task: () => require('./tasks/export-testkits'),
description: '** driver => testkit',
},
{
task: () => require('./tasks/transpile-files'),
args: { folder: 'dist/testkit' },
description: '** transpiling testkit',
},
{
task: () => require('./tasks/copy-folders'),
args: { srcDir: 'src/polyfills', destDir: 'dist/testkit/polyfills' },
description: '** polyfills => dist/testkit/polyfills',
},
{
task: () => require('./tasks/transpile-files'),
args: { folder: 'dist/testkit/polyfills' },
description: '** transpiling polyfills',
},
{
task: () => require('./tasks/mv-folders'),
args: { srcDir: 'dist/cjs', destDir: 'dist/src' },
description: '** dist/cjs - dist/src',
},
{
task: () => require('./tasks/copy-folders'),
args: { srcDir: 'dist/types/.', destDir: 'dist/src' },
description: '** dist/types - dist/src',
},
{
task: () => require('./tasks/mv-folders'),
args: {
srcDir: 'dist/esm',
destDir: 'dist/es/src',
createFolder: 'dist/es',
},
description: '** dist/esm - dist/es',
},
{
task: () => require('./tasks/copy-folders'),
args: { srcDir: 'dist/types/.', destDir: 'dist/es/src' },
description: '** dist/types - dist/es/src',
},
{
task: () => require('./tasks/export-stylesheets'),
description: '** index.st.css & index.es.st.css',
},
{
task: () => require('./tasks/patch-ssr-stylable'),
description: '** dist/*.st.css patch ssr',
},
];
const STEPS = tasks.length;
const TOTAL_STEPS_WIDTH = 20;
const START_TIME = new Date();
const STEP_WIDTH = TOTAL_STEPS_WIDTH / STEPS;
const progress = new ProgressBar(
'Transpiling `src` -> `dist` :bar :percent :dir',
{
total: STEP_WIDTH * STEPS,
},
);
tasks
.reduce(
(promise, { task, description, args = {} }) =>
promise
.then(() => {
progress.tick(STEP_WIDTH, { dir: description });
})
.then(() => task()(args))
.catch(e => {
progress.terminate('Error');
console.error(e);
process.exit(1);
}),
Promise.resolve(),
)
.then(() =>
console.log(`🚀 Done in ${Math.round(new Date() - START_TIME) / 1000}s`),
);