UNPKG

create-banner

Version:
67 lines (61 loc) 2.14 kB
'use strict'; var changeCase = require('change-case'); var dotProp = require('dot-prop'); var deepMerge = require('deepmerge'); var readPkgUp = require('read-pkg-up'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var changeCase__default = /*#__PURE__*/_interopDefaultLegacy(changeCase); var dotProp__default = /*#__PURE__*/_interopDefaultLegacy(dotProp); var deepMerge__default = /*#__PURE__*/_interopDefaultLegacy(deepMerge); var readPkgUp__default = /*#__PURE__*/_interopDefaultLegacy(readPkgUp); const now = new Date(); const TEMPLATES = { normal: `/*! * @name v@version * @homepage * * Copyright @year @author.name * Released under the @license license * * Date: @date */ `, simple: `/*! * @name v@version * Copyright @year @author.name * Released under the @license license */ `, inline: '/*! @name v@version | (c) @year @author.name | @license */', }; const DEFAULTS = { case: '', data: { date: now.toISOString(), year: now.getFullYear(), }, template: 'normal', }; const REGEXP_SCOPE = /^.+\//; const REGEXP_PLACEHOLDER = /@(\w+(?:\.\w+)*)/gi; function createBanner(options) { const opts = deepMerge__default['default'](DEFAULTS, options || {}); let { pkg } = opts; if (!pkg) { const result = readPkgUp__default['default'].sync(); if (result) { pkg = result.packageJson; } } const data = deepMerge__default['default'](pkg || {}, opts.data || {}); data.name = (data.name || '').replace(REGEXP_SCOPE, ''); if (typeof changeCase__default['default'].camelCase === 'function') { const convertCase = changeCase__default['default'][changeCase__default['default'].camelCase(opts.case || '')]; if (typeof convertCase === 'function') { data.name = convertCase(data.name); } } const template = TEMPLATES[opts.template || ''] || String(opts.template); return template.replace(REGEXP_PLACEHOLDER, (placeholder, property) => dotProp__default['default'].get(data, property)); } module.exports = createBanner;