Module

x/fuse/scripts/configs.js

Lightweight fuzzy-search, in JavaScript
Latest
File
const path = require('path')const replace = require('@rollup/plugin-replace')const node = require('@rollup/plugin-node-resolve')const babel = require('rollup-plugin-babel')const copy = require('rollup-plugin-copy')const pckg = require('../package.json')const typescript = require('typescript')
const FILENAME = 'fuse'const VERSION = process.env.VERSION || pckg.versionconst AUTHOR = pckg.authorconst HOMEPAGE = pckg.homepageconst DESCRIPTION = pckg.description
const banner = `/** * Fuse.js v${VERSION} - ${DESCRIPTION} (${HOMEPAGE}) * * Copyright (c) ${new Date().getFullYear()} ${AUTHOR.name} (${AUTHOR.url}) * All Rights Reserved. Apache Software License 2.0 * * http://www.apache.org/licenses/LICENSE-2.0 */\n`
const resolve = (_path) => path.resolve(__dirname, '../', _path)
const FeatureFlags = { LOGICAL_SEARCH_ENABLED: false, EXTENDED_SEARCH_ENABLED: false}
const fullBuildFeatures = { LOGICAL_SEARCH_ENABLED: true, EXTENDED_SEARCH_ENABLED: true}
const builds = { // UMD full build 'umd-dev-full': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.js`), format: 'umd', env: 'development', features: { ...fullBuildFeatures }, plugins: [ copy({ targets: [ { src: resolve('src/index.d.ts'), dest: resolve('dist'), rename: `${FILENAME}.d.ts`, transform: (content) => { return `// Type definitions for Fuse.js v${VERSION}\n// TypeScript v${typescript.version}\n\n${content}` } } ] }) ] }, // UMD production build 'umd-prod-full': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.min.js`), format: 'umd', env: 'production', features: { ...fullBuildFeatures } }, // UMD basic build 'umd-dev-basic': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.basic.js`), format: 'umd', env: 'development' }, 'umd-prod-basic': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.basic.min.js`), format: 'umd', env: 'production' }, // CommonJS full build 'commonjs-full': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.common.js`), env: 'development', features: { ...fullBuildFeatures }, format: 'cjs' }, // CommonJS basic build 'commonjs-basic': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.basic.common.js`), env: 'development', format: 'cjs' }, // ES modules build (for bundlers) 'esm-dev-full': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.esm.js`), format: 'es', env: 'development', features: { ...fullBuildFeatures }, transpile: false }, 'esm-prod-full': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.esm.min.js`), format: 'es', env: 'production', features: { ...fullBuildFeatures }, transpile: false }, 'esm-basic': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.basic.esm.js`), format: 'es', env: 'development', transpile: false }, 'esm-prod-basic': { entry: resolve('src/entry.js'), dest: resolve(`dist/${FILENAME}.basic.esm.min.js`), format: 'es', env: 'production', transpile: false }}
const defaultVars = { __VERSION__: VERSION}
const defaultFeatures = Object.keys(FeatureFlags).reduce((map, key) => { map[`process.env.${key}`] = FeatureFlags[key] return map}, {})
function genConfig(options) { // built-in vars const vars = { ...defaultVars, ...defaultFeatures }
const config = { input: options.entry, plugins: [node(), ...(options.plugins || [])], output: { banner, file: options.dest, format: options.format, name: 'Fuse' } }
// build-specific env if (options.env) { vars['process.env.NODE_ENV'] = JSON.stringify(options.env) }
// feature flags if (options.features) { Object.keys(options.features).forEach((key) => { vars[`process.env.${key}`] = JSON.stringify(options.features[key]) }) }
config.plugins.push(replace(vars))
if (options.transpile !== false) { config.plugins.push(babel()) }
return config}
function mapValues(obj, fn) { const res = {} Object.keys(obj).forEach((key) => { res[key] = fn(obj[key], key) }) return res}
if (process.env.TARGET) { module.exports = genConfig(builds[process.env.TARGET])} else { module.exports = mapValues(builds, genConfig)}