From 952b542f1909587dbb32f35c39ebeb2b08b9cab3 Mon Sep 17 00:00:00 2001 From: Jan Henning Thorsen Date: Tue, 20 Sep 2022 23:41:32 +0900 Subject: [PATCH] Changed to type:module in package.json so we can have modern JS --- .eslintrc.js => .eslintrc.cjs | 0 .gitignore | 1 + assets/rollup.config.d/core.js | 8 -------- assets/rollup.config.d/eslint.js | 10 --------- assets/rollup.config.d/include.js | 10 --------- assets/rollup.config.d/js.js | 14 ------------- assets/rollup.config.d/sass.js | 7 ------- assets/rollup.config.d/svelte.js | 6 ------ babel.config.js | 9 -------- babel.config.json | 20 ++++++++++++++++++ jest.config.js | 2 +- lib/Convos.pm | 8 +------- package.json | 1 + rollup.config.js | 34 ++++++++++++++++++------------- 14 files changed, 44 insertions(+), 86 deletions(-) rename .eslintrc.js => .eslintrc.cjs (100%) delete mode 100644 assets/rollup.config.d/core.js delete mode 100644 assets/rollup.config.d/eslint.js delete mode 100644 assets/rollup.config.d/include.js delete mode 100644 assets/rollup.config.d/js.js delete mode 100644 assets/rollup.config.d/sass.js delete mode 100644 assets/rollup.config.d/svelte.js delete mode 100644 babel.config.js create mode 100644 babel.config.json diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs diff --git a/.gitignore b/.gitignore index e2d399993..b9452a621 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ /public/docs/fonts/ /public/docs/scripts/ /public/docs/styles/ +/assets/rollup.config.d/ .perl-version assets/sass/.sass-cache/ node_modules/ diff --git a/assets/rollup.config.d/core.js b/assets/rollup.config.d/core.js deleted file mode 100644 index 9ece96ce4..000000000 --- a/assets/rollup.config.d/core.js +++ /dev/null @@ -1,8 +0,0 @@ -// Autogenerated by Mojo::Alien::rollup 1.02 -const commonjs = require('@rollup/plugin-commonjs'); -const {nodeResolve} = require('@rollup/plugin-node-resolve'); - -module.exports = function(config) { - config.plugins.push(nodeResolve()); - config.plugins.push(commonjs()); -}; diff --git a/assets/rollup.config.d/eslint.js b/assets/rollup.config.d/eslint.js deleted file mode 100644 index 3547f2f62..000000000 --- a/assets/rollup.config.d/eslint.js +++ /dev/null @@ -1,10 +0,0 @@ -// Autogenerated by Mojo::Alien::rollup 1.02 -const eslint = require('@rollup/plugin-eslint'); - -module.exports = function(config, {isDev}) { - if (!isDev) return; - config.plugins.push(eslint({ - exclude: ['node_modules/**', '**/*.css', '**/*.sass'], - fix: process.env.ESLINT_FIX ? true : false, - })); -} diff --git a/assets/rollup.config.d/include.js b/assets/rollup.config.d/include.js deleted file mode 100644 index a70a8471f..000000000 --- a/assets/rollup.config.d/include.js +++ /dev/null @@ -1,10 +0,0 @@ -const nodePolyfills = require('rollup-plugin-polyfill-node'); - -module.exports = function(config, opts) { - config.plugins.push(nodePolyfills()); - require('./sass')(config, opts); - require('./eslint')(config, opts); - require('./core')(config, opts); - require('./js')(config, opts); - require('./svelte')(config, opts); -}; diff --git a/assets/rollup.config.d/js.js b/assets/rollup.config.d/js.js deleted file mode 100644 index a1de85812..000000000 --- a/assets/rollup.config.d/js.js +++ /dev/null @@ -1,14 +0,0 @@ -// Autogenerated by Mojo::Alien::rollup 1.02 -const {babel} = require('@rollup/plugin-babel'); -const {terser} = require('rollup-plugin-terser'); - -module.exports = function(config, {isDev}) { - config.plugins.push(babel({ - babelHelpers: 'runtime', - extensions: ['.html', '.js', '.mjs'], - plugins: ['@babel/plugin-transform-runtime'], - presets: [['@babel/preset-env', {corejs: 3, debug: false, useBuiltIns: 'entry'}]], - })); - - if (!isDev) config.plugins.push(terser()); -} diff --git a/assets/rollup.config.d/sass.js b/assets/rollup.config.d/sass.js deleted file mode 100644 index a400e50ea..000000000 --- a/assets/rollup.config.d/sass.js +++ /dev/null @@ -1,7 +0,0 @@ -const sass = require('sass'); -const scss = require('rollup-plugin-scss'); - -module.exports = function(config, {isDev}) { - const outputStyle = isDev ? null : 'compressed'; - config.plugins.push(scss({outputStyle, sass, sourceMap: true, watch: './assets/sass'})); -}; diff --git a/assets/rollup.config.d/svelte.js b/assets/rollup.config.d/svelte.js deleted file mode 100644 index 874beef3a..000000000 --- a/assets/rollup.config.d/svelte.js +++ /dev/null @@ -1,6 +0,0 @@ -// Autogenerated by Mojo::Alien::rollup 1.02 -const svelte = require('rollup-plugin-svelte'); - -module.exports = function(config) { - config.plugins.push(svelte({})); -}; diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 18e998efe..000000000 --- a/babel.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - env: { - test: { - presets: [ - ['@babel/env', {targets: {node: 10}}], - ], - }, - }, -}; diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 000000000..34037dbe3 --- /dev/null +++ b/babel.config.json @@ -0,0 +1,20 @@ +{ + "plugins": [ + "@babel/plugin-transform-runtime" + ], + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "edge": "17", + "firefox": "60", + "chrome": "67", + "safari": "11.1" + }, + "useBuiltIns": "entry", + "corejs": "3.6.5" + } + ] + ] +} diff --git a/jest.config.js b/jest.config.js index 1c7de32f0..859bbfbdf 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { collectCoverage: false, collectCoverageFrom: ['/assets/**/*.js'], moduleFileExtensions: ['js'], diff --git a/lib/Convos.pm b/lib/Convos.pm index 949dd13d8..1584d0d23 100644 --- a/lib/Convos.pm +++ b/lib/Convos.pm @@ -88,13 +88,7 @@ sub startup { $user_r->get('/settings/*rest', {rest => ''}); $user_r->get('/search'); - $self->plugin( - Webpack => { - engine => 'Mojo::Alien::rollup', - process => [qw(sass eslint core js svelte)], - dependencies => {core => 'rollup', svelte => [qw(rollup-plugin-svelte svelte)]} - } - ); + $self->plugin(Webpack => {engine => 'Mojo::Alien::rollup', process => []}); $self->_plugins; $self->hook(around_action => \&_around_action); diff --git a/package.json b/package.json index 331af05f3..9591b65a0 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "version": "7.6.0", "license": "Artistic-2.0", "repository": "https://github.com/convos-chat/convos", + "type": "module", "scripts": { "build": "ROLLUP_OUT_DIR=public/asset rollup -c --environment production", "dev": "./script/convos dev", diff --git a/rollup.config.js b/rollup.config.js index 836c9db49..5fd1bfa3e 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,27 +1,33 @@ -// Autogenerated by Mojo::Alien::rollup 1.02 -const fs = require('fs'); -const pkg = require('./package.json'); -const path = require('path'); +import commonjs from '@rollup/plugin-commonjs'; +import eslint from '@rollup/plugin-eslint'; +import path from 'path'; +import resolve from '@rollup/plugin-node-resolve'; +import sass from 'sass'; +import scss from 'rollup-plugin-scss'; +import svelte from 'rollup-plugin-svelte'; +import {babel} from '@rollup/plugin-babel'; +import {terser} from 'rollup-plugin-terser'; const assetsDir = process.env.ROLLUP_ASSETS_DIR || path.resolve(__dirname, 'assets'); const isDev = process.env.NODE_ENV !== 'production'; +const fileKey = isDev ? 'development' : parseInt((new Date().getTime() / 1000), 10).toString(16); const outDir = process.env.ROLLUP_OUT_DIR || path.resolve(__dirname, 'dist'); -const ts = parseInt((new Date().getTime() / 1000), 10).toString(16); - -function outPath(name) { - return path.resolve(outDir, name.replace(/\[hash\]/, isDev ? 'development' : ts)); -} const config = { input: path.resolve(assetsDir, 'index.js'), - output: {format: 'iife', sourcemap: true}, + output: {format: 'iife', sourcemap: true, file: path.resolve(outDir, `convos.${fileKey}.js`)}, plugins: [], watch: {clearScreen: false}, }; -const includeFile = path.resolve(assetsDir, 'rollup.config.d', 'include.js'); -if (fs.existsSync(includeFile)) require(includeFile)(config, {isDev}); +const outputStyle = isDev ? null : 'compressed'; +config.plugins.push(scss({outputStyle, sass, sourceMap: true, watch: './assets/sass'})); +config.plugins.push(eslint({exclude: ['node_modules/**', '**/*.css', '**/*.sass'], fix: process.env.ESLINT_FIX ? true : false})); +config.plugins.push(svelte({})); +config.plugins.push(commonjs()); +config.plugins.push(resolve({browser: true})); +config.plugins.push(babel({babelHelpers: 'runtime'})); -if (!config.output.dir && !config.output.file) config.output.file = outPath(pkg.name.replace(/\W+/g, '-') + '.[hash].js'); +if (!isDev) config.plugins.push(terser()); -module.exports = config; +export default config;