UNPKG

@ryusei/light

Version:

<div align="center"> <a href="https://light.ryuseijs.com"> <img alt="RyuseiLight" src="https://light.ryuseijs.com/images/svg/logo.svg" width="70"> </a>

110 lines (102 loc) 2.82 kB
const { src, dest, parallel } = require( 'gulp' ); const rollup = require( 'rollup' ); const typescript = require( 'rollup-plugin-typescript2' ); const rename = require( 'ts-transformer-properties-rename' ).default; const babel = require( '@rollup/plugin-babel' ); const terser = require( 'rollup-plugin-terser' ).terser; const path = require( 'path' ); const gzip = require( 'gulp-gzip' ); const info = require( '../package' ); const banner = `/*! * RyuseiLight.js * Version : ${ info.version } * License : ${ info.license } * Copyright: 2020 ${ info.author } */`; function buildScript( type ) { const file = type === 'default' ? `./dist/js/ryuseilight.min.js` : `./dist/js/ryuseilight-${ type }.min.js`; return rollup.rollup( { input : `./src/js/build/${ type }.ts`, plugins: [ typescript( { transformers: [ service => ( { before: [ rename( service.getProgram(), { internalPrefix: '' } ), ], after : [], } ), ], } ), babel.getBabelOutputPlugin( { configFile: path.resolve( __dirname, '../.babelrc' ), allowAllFormats: true, } ), terser( { mangle: { properties: { regex: /^_(private)_/, }, } } ), ] } ).then( bundle => { return bundle.write( { file, banner, name : 'RyuseiLight', format : 'umd', sourcemap: true, } ); } ).then( () => { if ( type === 'default' ) { return src( file ) .pipe( gzip() ) .pipe( dest( './dist/js/' ) ); } } ); } function buildModule( format, declaration ) { const options = declaration ? { check: false, useTsconfigDeclarationDir: true, tsconfigOverride: { compilerOptions: { declarationDir: 'dist/types', declaration : true, declarationMap: true, }, }, } : {}; return rollup.rollup( { input : './src/js/index.ts', plugins: [ typescript( options ), babel.getBabelOutputPlugin( { presets: [ [ '@babel/preset-env', { modules: false, loose : true, } ] ] } ), ] } ).then( bundle => { return bundle.write( { banner, file : `./dist/js/ryuseilight.${ format }.js`, format, exports: 'named', } ); } ); } module.exports = parallel( function jsDefault() { return buildScript( 'default' ) }, function jsExtensions() { return buildScript( 'extensions' ) }, function jsComplete() { return buildScript( 'complete' ) }, function moduleCjs() { return buildModule( 'cjs' ) }, function moduleEsm() { return buildModule( 'esm', true ) }, );