padl
Version:
Develop pattern libraries with lit-element
172 lines (128 loc) • 6.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _rollup = _interopRequireDefault(require("../util/rollup"));
var _util = require("../util");
var _rollupPluginTerser = require("rollup-plugin-terser");
var _pluginNodeResolve = _interopRequireDefault(require("@rollup/plugin-node-resolve"));
var _pluginBabel = _interopRequireDefault(require("@rollup/plugin-babel"));
var _rollupPluginLivereload = _interopRequireDefault(require("rollup-plugin-livereload"));
var _pluginMultiEntry = _interopRequireDefault(require("@rollup/plugin-multi-entry"));
var _pluginCommonjs = _interopRequireDefault(require("@rollup/plugin-commonjs"));
var _rollupPluginStyles = _interopRequireDefault(require("rollup-plugin-styles"));
var _rollupPluginDelete = _interopRequireDefault(require("rollup-plugin-delete"));
var _rollupPluginCleanup = _interopRequireDefault(require("rollup-plugin-cleanup"));
var _lessPluginAutoprefix = _interopRequireDefault(require("less-plugin-autoprefix"));
var _lessPluginCleanCss = _interopRequireDefault(require("less-plugin-clean-css"));
var _rollupPluginFilesize = _interopRequireDefault(require("rollup-plugin-filesize"));
var _isInstalledGlobally = _interopRequireDefault(require("is-installed-globally"));
var _path = _interopRequireDefault(require("path"));
var _build = require("../util/build");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const autoprefixPlugin = new _lessPluginAutoprefix.default({
grid: true,
overrideBrowserslist: ['last 2 versions']
});
const cleanCSSPlugin = new _lessPluginCleanCss.default({
advanced: true,
level: 2
});
const cliPath = _path.default.join(_path.default.dirname(__filename), '..');
const dir = 'dist';
var _default = async config => {
let options = { ...config
};
const polyfillPath = `${dir}/polyfill.js`;
const componentsPath = `${dir}/components.js`;
const mergedComponentsPath = `${dir}/components.min.js`;
const modernComponentsPath = `${dir}/components.modern.min.js`;
const onlyComponentsPath = `${dir}/only.components.min.js`;
const polyInputs = ['node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js', 'node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js', `${cliPath}/lib/includes.js`];
let plugins = [(0, _pluginNodeResolve.default)(), (0, _rollupPluginStyles.default)({
mode: 'extract',
less: {
plugins: [autoprefixPlugin, cleanCSSPlugin],
output: false
}
}), (0, _pluginMultiEntry.default)(), (0, _pluginBabel.default)(_util.babelConfig), (0, _rollupPluginCleanup.default)()];
let minPlugins = [(0, _pluginMultiEntry.default)(), (0, _rollupPluginTerser.terser)(_util.terserConfig), (0, _rollupPluginCleanup.default)(), (0, _pluginNodeResolve.default)()];
const modernPlugins = [(0, _pluginMultiEntry.default)(), (0, _rollupPluginStyles.default)({
mode: 'extract',
less: {
plugins: [autoprefixPlugin, cleanCSSPlugin],
output: false
}
}), (0, _rollupPluginTerser.terser)(_util.terserConfig), (0, _rollupPluginCleanup.default)(), (0, _pluginNodeResolve.default)()];
if (!options.from) {
minPlugins.push((0, _rollupPluginFilesize.default)());
}
if (options.from && options.from === 'serve' && options.watch && options.reload && process.env.NODE_ENV !== 'production' || options.from === 'test' && options.persistent) {
const port = await (0, _util.randomPort)();
const livereloadPlugin = (0, _rollupPluginLivereload.default)({
watch: [`${dir}/**`],
exts: ['js', 'less', 'svg', 'png', 'jpg', 'gif', 'css'],
applyCSSLive: true,
port
});
plugins.push(livereloadPlugin);
}
if (options.from && options.from === 'analysis' && options.plugins) {
plugins = [...plugins, ...options.plugins, (0, _rollupPluginTerser.terser)(_util.terserConfig)];
}
console.log('Building files...'); // Build polyfill.js
await (0, _rollup.default)(polyInputs, polyfillPath, {
noWatch: true
}, [(0, _pluginMultiEntry.default)(), (0, _pluginNodeResolve.default)(), (0, _rollupPluginDelete.default)({
targets: dir
})]); // Build component.js
await (0, _rollup.default)(['src/*/component.js'], componentsPath, options, [(0, _pluginCommonjs.default)(), ...plugins]);
if (options.from && options.from === 'analysis') {
return;
}
await (0, _build.copyFiles)(config, dir);
const styles = await (0, _build.createStyles)(config, [autoprefixPlugin, cleanCSSPlugin]);
if (options.from && options.from === 'serve' || options.from === 'test' && options.persistent) {
(0, _build.watchStyles)(config, [autoprefixPlugin, cleanCSSPlugin]);
}
if (options.from && options.from === 'serve' && process.env.NODE_ENV !== 'production') {
return;
} // Build components.min.js
await (0, _rollup.default)(componentsPath, mergedComponentsPath, options, minPlugins); //Build components.modern.min.js
await (0, _rollup.default)('src/**/component.js', modernComponentsPath, options, modernPlugins); // Build components.only.min.js
await (0, _rollup.default)(componentsPath, onlyComponentsPath, {
format: 'iife'
}, [(0, _rollupPluginTerser.terser)(_util.terserConfig), (0, _rollupPluginCleanup.default)(), (0, _pluginNodeResolve.default)()]);
const name = await (0, _build.createModule)(config, styles, dir); // Build {name}.min.js module
await (0, _rollup.default)(`${dir}/${name}.js`, `${dir}/${name}.min.js`, {}, [(0, _rollupPluginTerser.terser)(_util.terserConfig), ...plugins]);
if (options.storybook) {
// build static storybook
console.log('Building Storybook...');
const errorMessage = 'Please use PaDL locally to serve to get the correct version of Storybook';
if (!_isInstalledGlobally.default) {
try {
const storybook = require('@storybook/html/standalone');
await storybook({
mode: 'static',
outputDir: `${dir}/demo`,
configDir: '.storybook'
}).catch(e => {
console.error(e);
process.exit(1);
return;
});
} catch (error) {
console.log(`Error: ${error}`);
}
} else {
console.log(errorMessage);
}
}
console.log('Finished building files...');
if (!options.from) {
process.exit(0);
return;
}
};
exports.default = _default;