@ryusei/code
Version:
<div align="center"> <a href="https://code.ryuseijs.com"> <img alt="RyuseiCode" src="https://code.ryuseijs.com/images/svg/logo.svg" width="70"> </a>
55 lines (51 loc) • 1.88 kB
JavaScript
const rollup = require( 'rollup' ).rollup;
const typescript = require( 'rollup-plugin-typescript2' );
const uglify = require( 'rollup-plugin-uglify' ).uglify;
const resolve = require( '@rollup/plugin-node-resolve' );
const babel = require( '@rollup/plugin-babel' );
const fs = require( 'fs' ).promises;
module.exports = function buildWorker() {
const dir = './src/js/languages';
return fs.readdir( dir, { withFileTypes: true } )
.then( entries => entries.filter( entry => entry.isDirectory() ) )
.then( entries => {
entries.forEach( entry => {
const file = `${ dir }/${ entry.name }/url.ts`;
rollup( {
input : `${ dir }/${ entry.name }/worker.ts`,
plugins: [
resolve.nodeResolve(),
typescript( {
tsconfigOverride: {
compilerOptions: {
sourceMap: false,
mapRoot: null,
}
}
} ),
babel.getBabelOutputPlugin( {
presets: [ [
'@babel/preset-env',
{
modules: false,
loose : true,
},
] ],
} ),
uglify(),
],
} ).then( bundle => {
return bundle.write( {
file,
format : 'esm',
sourcemap: false,
} );
} ).then( bundle => {
const code = bundle.output[ 0 ].code.replace( /(\/\*[\s\S]*?\*\/)|\n/g, '' );
const base64 = Buffer.from( code ).toString( 'base64' );
const output = `export function url() { return URL.createObjectURL( new Blob( [ atob( '${ base64 }' ) ] ) ); }`;
return fs.writeFile( file, output );
} );
} );
} );
};