93 lines
2.2 KiB
JavaScript
93 lines
2.2 KiB
JavaScript
import os from 'os';
|
||
import path from 'path';
|
||
import fs from 'fs';
|
||
|
||
import resolve from 'rollup-plugin-node-resolve';
|
||
import commonjs from 'rollup-plugin-commonjs';
|
||
import postcss from 'rollup-plugin-postcss';
|
||
import { terser } from "rollup-plugin-terser";
|
||
import replace from 'rollup-plugin-replace';
|
||
|
||
import postcss_import from 'postcss-import';
|
||
import postcss_copy from 'postcss-copy';
|
||
|
||
|
||
let is_production = process.env.NODE_ENV == "production";
|
||
|
||
let plugins = [
|
||
resolve({
|
||
// use "module" field for ES6 module if possible
|
||
module: true, // Default: true
|
||
|
||
// use "jsnext:main" if possible
|
||
// – see https://github.com/rollup/rollup/wiki/jsnext:main
|
||
jsnext: true, // Default: false
|
||
|
||
// use "main" field or index.js, even if it's not an ES6 module
|
||
// (needs to be converted from CommonJS to ES6
|
||
// – see https://github.com/rollup/rollup-plugin-commonjs
|
||
main: true, // Default: true
|
||
|
||
// some package.json files have a `browser` field which
|
||
// specifies alternative files to load for people bundling
|
||
// for the browser. If that's you, use this option, otherwise
|
||
// pkg.browser will be ignored
|
||
browser: true, // Default: false
|
||
|
||
// not all files you want to resolve are .js files
|
||
extensions: ['.mjs', '.js', '.jsx', '.json'], // Default: [ '.mjs', '.js', '.json', '.node' ]
|
||
}),
|
||
|
||
|
||
replace({
|
||
exclude: 'node_modules/**',
|
||
values: {
|
||
"__BUILD_DATE__": () => new Date().toISOString(),
|
||
// "__VERSION__": fs.readFileSync("version", "utf8").trim()
|
||
}
|
||
}),
|
||
|
||
commonjs({
|
||
|
||
}),
|
||
|
||
postcss({
|
||
plugins: [
|
||
postcss_import({}),
|
||
postcss_copy({
|
||
dest: "app",
|
||
template: "resources/[name].[ext]"
|
||
})
|
||
// postcss_url(),
|
||
// postcss_url({
|
||
// url: "copy",
|
||
// basePath: path.resolve("."),
|
||
// assetPath: "resources"
|
||
// })
|
||
],
|
||
// Save it to a .css file - we'll reference it ourselves thank you
|
||
// very much
|
||
extract: true,
|
||
sourceMap: true,
|
||
minimize: is_production, // Causes an error at the moment for some reason
|
||
})
|
||
];
|
||
|
||
if(is_production) {
|
||
console.log("[config] In production environment - minifying JS");
|
||
plugins.push(terser({
|
||
numWorkers: os.cpus().length,
|
||
compress: {
|
||
ecma: 6
|
||
}
|
||
}));
|
||
}
|
||
|
||
export default {
|
||
input: 'js/index.mjs',
|
||
output: {
|
||
file: 'dist/linux101.js',
|
||
format: 'esm'
|
||
},
|
||
plugins
|
||
};
|