From 7e291890c4c0d76fc8876e99b6c38144124ef7db Mon Sep 17 00:00:00 2001 From: Harrison Ifeanyichukwu Date: Sat, 21 Mar 2020 20:55:42 +0100 Subject: [PATCH] feat: added uglify option on all build formats --- src/@types/index.d.ts | 6 ++++++ src/constants.ts | 2 +- src/modules/Bundler.ts | 6 +----- src/modules/utils.ts | 19 ++++++++++--------- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/@types/index.d.ts b/src/@types/index.d.ts index 58d94c6..e19be29 100644 --- a/src/@types/index.d.ts +++ b/src/@types/index.d.ts @@ -26,6 +26,12 @@ export interface CommonConfig { */ assets?: (string | RegExp)[]; + /** + * boolean indicating if rollup plugin terser should be applied to the build, when in production mode + * default to false + */ + uglify?: boolean; + /** * boolean indicating if the interop rollup setting should be enabled for the build */ diff --git a/src/constants.ts b/src/constants.ts index 5d81c20..6e507a7 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,5 +1,5 @@ import { CommonConfig } from './@types'; -export const COMMON_CONFIGS: (keyof CommonConfig)[] = ['sourcemap', 'interop']; +export const COMMON_CONFIGS: (keyof CommonConfig)[] = ['sourcemap', 'interop', 'uglify']; export const REGEX_FIELDS = ['assets', 'include', 'exclude']; diff --git a/src/modules/Bundler.ts b/src/modules/Bundler.ts index f871aa4..3340cc2 100644 --- a/src/modules/Bundler.ts +++ b/src/modules/Bundler.ts @@ -278,11 +278,7 @@ class Bundler { log(chalk.yellow(`generating ${config.format} builds...\n`)); - const plugins = getRollupPlugins( - this.config, - this.generalConfig, - config.format === 'esm', - ); + const plugins = getRollupPlugins(mainConfig, config, this.generalConfig); const external = config.format === 'iife' || config.format === 'umd' ? config.externals diff --git a/src/modules/utils.ts b/src/modules/utils.ts index 5a4095d..eb3a490 100644 --- a/src/modules/utils.ts +++ b/src/modules/utils.ts @@ -3,8 +3,9 @@ import commonjs from '@rollup/plugin-commonjs'; import babel from 'rollup-plugin-babel'; import json from '@rollup/plugin-json'; import { terser } from 'rollup-plugin-terser'; -import { Config, GeneralConfig } from '../@types'; -import { isProdEnv, getEntryPath } from '@teclone/node-utils'; +import { Config, GeneralConfig, DistConfig, ESMConfig, CJSConfig } from '../@types'; +import { getEntryPath } from '@teclone/node-utils'; + import path from 'path'; import fs from 'fs'; @@ -81,14 +82,14 @@ export const getBabelPresets = ( }; export const getRollupPlugins = ( - config: Config, + mainConfig: Config, + buildConfig: DistConfig | ESMConfig | CJSConfig, generalConfig: GeneralConfig, - useESModules: boolean = false, ) => { const internalNodeModulesDir = getEntryPath(__dirname); return [ resolve({ - extensions: config.extensions, + extensions: mainConfig.extensions, }), commonjs({ @@ -106,20 +107,20 @@ export const getRollupPlugins = ( plugins: getBabelPlugins( generalConfig?.babelConfig?.plugins, internalNodeModulesDir, - useESModules, + buildConfig.format === 'esm', ), exclude: 'node_modules/**', - extensions: config.extensions, + extensions: mainConfig.extensions, runtimeHelpers: true, }), json(), - config.uglify && isProdEnv() && terser(), + buildConfig.uglify && terser(), - ...config.plugins, + ...mainConfig.plugins, ]; };