es2049package
Version:
ECMAScript 2049 package: zero-configuration libraries and command-line utilies by Harald Rudell
65 lines (54 loc) • 2.5 kB
JavaScript
/*
© 2017-present Harald Rudell <harald.rudell@gmail.com> (http://www.haraldrudell.com)
This source code is licensed under the ISC-style license found in the LICENSE file in the root directory of this source tree.
*/
import pjson from '../package.json'
import nodeIgnores from '../src/nodepackages.js'
import babelPrintFilename from '../src/babelPrintFilenamePlugin.js'
import {convertYaml} from './convertYaml.js'
import babel from 'rollup-plugin-babel'
import commonjs from 'rollup-plugin-commonjs'
import _eslint from 'rollup-plugin-eslint'; const {eslint} = _eslint
import json from 'rollup-plugin-json'
import resolve from 'rollup-plugin-node-resolve'
import {shebang as shebangPlugin, chmod} from 'rollup-plugin-thatworks'
import path from 'path'
import util from 'util'
const srcRollupConfig = 'src/rollup.config.mjs'
const print = !!process.env.DEBUG
convertYaml(path.resolve('src', 'eslintrc.yaml'), path.resolve('src', 'eslintrc.json'))
export default [
{input: srcRollupConfig, output: {file: pjson.main, format: 'es'}, options: {dependencies: true}},
{input: 'src/cleanbin.js', output: {file: 'bin/clean.js', format: 'es'}, options: {shebang: true}},
{input: 'src/rollup.js', output: {file: 'bin/rollup.js', format: 'es'}, options: {shebang: true}},
].map(getConfig)
function getConfig(config0) {
const {options: {shebang, dependencies}, input, output} = config0
const includeExclude = {
include: ['**/*.js', '**/*.mjs'],
exclude: 'node_modules/**',
}
let babelOptions
const config = {
input, output,
external: nodeIgnores.slice().concat(Object.keys(Object(Object(pjson).dependencies))),
plugins: [
eslint(includeExclude),
resolve({extensions: ['.mjs', '.js', '.json'], jail: process.cwd()}),
json(), // required for import of .json files
babel(babelOptions = Object.assign({
babelrc: false, // unlike babel-node, rollup fails if an es2015 module transformer is included
//runtimeHelpers: true,
presets: [['@babel/preset-env', {targets: {node: '12'}, modules: false}]],
plugins: [
].concat(print ? babelPrintFilename : []),
}, includeExclude)),
commonjs(),
].concat(shebang ? [shebangPlugin(), chmod()] : []),
}
if (print) {
console.log(`Rollup options for ${config.input}: ${util.inspect(config, {colors: true, depth: null})}`)
console.log('Rollup-Babel options:', util.inspect(babelOptions, {colors: true, depth: null}))
}
return config
}