| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import autoprefixer from 'autoprefixer';
- import babel from '@rollup/plugin-babel';
- import browsersync from 'rollup-plugin-browsersync';
- import commonjs from '@rollup/plugin-commonjs';
- import cssnano from 'cssnano';
- import copy from 'rollup-plugin-copy';
- // import del from 'rollup-plugin-delete';
- // import { eslint } from 'rollup-plugin-eslint';
- import json from 'rollup-plugin-json';
- import path from 'path';
- import postcss from 'rollup-plugin-postcss';
- import riot from 'rollup-plugin-riot';
- import resolve from '@rollup/plugin-node-resolve';
- import sourcemaps from 'rollup-plugin-sourcemaps';
- import stylelint from 'stylelint';
- import { terser } from 'rollup-plugin-terser';
- import config from './build.json';
- const printWarning = (message) => {
- if (message.code === 'CIRCULAR_DEPENDENCY') {
- return;
- }
- console.error(message); // eslint-disable-line
- };
- let TARGET = process.env.NODE_ENV || 'development';
- let MODE = process.env.NODE_OPT;
- export default {
- onwarn: printWarning,
- input: path.join(config.path.input, config.path.js, `${config.main}.js`),
- output: {
- file: path.join(config.path.output, config.path.js, `${config.main}${config[TARGET].infix}.js`),
- format: 'iife',
- sourcemap: config[TARGET].sourcemap
- },
- plugins: [
- // (MODE !== 'serve' && del({ targets: [path.join(config.path.output, '/*'), path.join(config.path.output, '/*')] })),
- resolve({ browser: true }),
- json(),
- commonjs(),
- // eslint({
- // exclude: ['styles/**', 'context/**', 'html/**']
- // }),
- riot(),
- babel({ babelHelpers: 'bundled' }),
- (TARGET === 'development' && sourcemaps()),
- postcss({
- extract: `${config.main}${config[TARGET].infix}.css`, // rollup v3 seems to have broken the convenient way. file needs to be copied to destination in succeeding step
- plugins: [
- autoprefixer(),
- stylelint(),
- (TARGET === 'production' && cssnano())
- ]
- }),
- copy({
- targets: [
- { src: path.join(config.path.output, config.path.js, `${config.main}${config[TARGET].infix}.css`), dest: path.join(config.path.output, config.path.css) },
- { src: path.join(config.path.data, config.data), dest: path.join(config.path.output, config.path.data) },
- { src: path.join(config.path.assets, config.path.js), dest: config.path.output },
- { src: path.join(config.path.assets, config.path.img), dest: config.path.output },
- { src: path.join(config.path.assets, config.path.fonts), dest: config.path.output },
- ],
- hook: 'writeBundle',
- verbose: true
- }),
- (TARGET === 'production' && terser()),
- (MODE === 'serve' && browsersync({
- server: {
- baseDir: config.path.output,
- index: config.html.output
- }
- }))
- ]
- };
|