UNPKG

padl

Version:
172 lines (128 loc) 6.4 kB
"use strict"; 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;