Skip to content

Commit b6e4c60

Browse files
authored
Merge pull request #1945 from OpenConext/feature/1940-fix-last-js-issue
Upgrade js & remove abandoned packages
2 parents 6c73477 + 0ded8b9 commit b6e4c60

6 files changed

Lines changed: 632 additions & 1456 deletions

File tree

theme/.babelrc

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,9 @@
11
{
2-
"env": {
3-
"development": {
4-
"presets": [
5-
["@babel/preset-env", {
6-
"useBuiltIns": "usage",
7-
"corejs": 3,
8-
"debug": false,
9-
"targets": {
10-
"browsers": [ ">0.25%"]
11-
}
12-
}]
13-
]
14-
},
15-
"test": {
16-
"presets":[
17-
["@babel/preset-env", {
18-
"useBuiltIns": "usage",
19-
"targets": {
20-
"node": "current",
21-
"browsers": [ ">0.25%"]
22-
}
23-
}]
24-
]
25-
}
26-
}
2+
"presets": [
3+
["@babel/preset-env", {
4+
"useBuiltIns": "usage",
5+
"corejs": 3,
6+
"debug": false
7+
}]
8+
]
279
}

theme/.terserrc.json

Lines changed: 0 additions & 11 deletions
This file was deleted.

theme/package.json

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,31 @@
1818
"lint:css": "stylelint ${EB_THEME:=openconext}/stylesheets/**/*.*ss",
1919
"clean": "rimraf ../public/images/* ../public/javascripts/* ../public/stylesheets/* ../public/fonts/*",
2020
"build": "node scripts/build.js",
21-
"buildtheme": "yarn build:clean && yarn build:js && yarn build:css && yarn build:copy:base && yarn build:copy:theme",
21+
"buildtheme": "yarn build:clean && yarn build:js && yarn build:css && bash scripts/copy-assets.sh",
2222
"build:clean": "rimraf ../public/javascripts/* ../public/stylesheets/*",
23-
"build:js": "mkdir -p ../public/javascripts && yarn build:js:bundle && yarn build:js:minify",
24-
"build:js:bundle": "browserify ${EB_THEME:=openconext}/javascripts/application.js -t [ babelify ] -o ../public/javascripts/application.bundle.js",
25-
"build:js:minify": "terser ../public/javascripts/application.bundle.js --config-file .terserrc.json -o ../public/javascripts/application.min.js",
26-
"build:js:debug": "mkdir -p ../public/javascripts && browserify ${EB_THEME:=openconext}/javascripts/application.js -d -t [ babelify ] -o ../public/javascripts/application.min.js",
23+
"build:js": "mkdir -p ../public/javascripts && EB_THEME=${EB_THEME:=openconext} webpack --config webpack.config.js --mode production",
24+
"build:js:debug": "mkdir -p ../public/javascripts && EB_THEME=${EB_THEME:=openconext} webpack --config webpack.config.js --mode development",
2725
"build:css": "mkdir -p ../public/stylesheets && yarn build:css:sass && yarn build:css:postcss",
2826
"build:css:sass": "sass ${EB_THEME:=openconext}/stylesheets:../public/stylesheets/",
2927
"build:css:postcss": "BROWSERSLIST_CONFIG=.browserslistrc postcss ../public/stylesheets/*.css --use autoprefixer --use cssnano --no-map --dir ../public/stylesheets",
30-
"build:copy:base": "mkdir -p ../public/images && copyfiles --up 2 base/images/* ../public/images/ && mkdir -p ../public/fonts && copyfiles --up 2 -e base/stylesheets/fonts/*.txt -f base/stylesheets/fonts/* ../public/fonts",
31-
"build:copy:theme": "copyfiles --up 2 ${EB_THEME:=openconext}/images/* ../public/images/ && copyfiles --up 2 -e {EB_THEME:=openconext}/stylesheets/fonts/*.txt -f ${EB_THEME:=openconext}/stylesheets/fonts/* ../public/fonts",
3228
"create-theme": "node scripts/create-theme.js",
3329
"watch": "node scripts/watch.js",
34-
"watch:js": "watchify ${EB_THEME:=base}/javascripts/application.js --poll=100 -d -t [ babelify ] -o ../public/javascripts/application.bundle.js -v && cp ../public/javascripts/application.bundle.js ../public/javascripts/application.min.js",
30+
"watch:js": "mkdir -p ../public/javascripts && EB_THEME=${EB_THEME:=openconext} webpack --config webpack.config.js --mode development --watch",
3531
"watch:css": "sass -w ${EB_THEME:=openconext}/stylesheets:../public/stylesheets",
3632
"release": "yarn build"
3733
},
3834
"author": "",
3935
"devDependencies": {
4036
"@babel/core": "^7.22",
41-
"@babel/polyfill": "^7.12",
4237
"@babel/preset-env": "^7.22",
4338
"@eslint/js": "^10.0.1",
4439
"autoprefixer": "^10.4",
45-
"babelify": "^10.0",
46-
"browserify": "^17.0",
47-
"copyfiles": "^2.4",
40+
"babel-loader": "^9.0",
4841
"core-js": "^3.32",
4942
"cssnano": "^7.1.1",
5043
"eslint": "^10.0.3",
5144
"globals": "^17.4.0",
45+
"postcss": "^8.4.32",
5246
"postcss-cli": "^11.0.1",
5347
"postcss-sass": "^0.5",
5448
"postcss-scss": "^4.0",
@@ -57,8 +51,9 @@
5751
"socket.io": "^4.8.1",
5852
"stylelint": "^17.4.0",
5953
"stylelint-config-recommended": "^18.0.0",
60-
"terser": "^5.44.0",
61-
"watchify": "^4.0.0"
54+
"terser-webpack-plugin": "^5.4.0",
55+
"webpack": "^5.0",
56+
"webpack-cli": "^5.0"
6257
},
6358
"dependencies": {
6459
"@fortawesome/fontawesome-free": "^7.0.1",

theme/scripts/copy-assets.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
THEME=${EB_THEME:-openconext}
5+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6+
ROOT="$SCRIPT_DIR/.."
7+
8+
mkdir -p "$ROOT/../public/images" "$ROOT/../public/fonts"
9+
10+
# Copy base assets
11+
cp "$ROOT/base/images/"* "$ROOT/../public/images/"
12+
find "$ROOT/base/stylesheets/fonts/" -maxdepth 1 -type f ! -name '*.txt' -exec cp {} "$ROOT/../public/fonts/" \;
13+
14+
# Copy theme assets
15+
cp "$ROOT/$THEME/images/"* "$ROOT/../public/images/"
16+
if [ -d "$ROOT/$THEME/stylesheets/fonts" ]; then
17+
find "$ROOT/$THEME/stylesheets/fonts/" -maxdepth 1 -type f ! -name '*.txt' -exec cp {} "$ROOT/../public/fonts/" \;
18+
fi

theme/webpack.config.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
const path = require('path');
2+
const TerserPlugin = require('terser-webpack-plugin');
3+
4+
const theme = process.env.EB_THEME || 'openconext';
5+
6+
module.exports = (env, argv) => {
7+
const isProd = argv.mode === 'production';
8+
9+
return {
10+
entry: path.resolve(__dirname, `${theme}/javascripts/application.js`),
11+
output: {
12+
path: path.resolve(__dirname, '../public/javascripts'),
13+
filename: 'application.min.js',
14+
},
15+
module: {
16+
rules: [
17+
{
18+
test: /\.js$/,
19+
exclude: /node_modules/,
20+
use: {
21+
loader: 'babel-loader',
22+
},
23+
},
24+
],
25+
},
26+
optimization: isProd ? {
27+
minimizer: [
28+
new TerserPlugin({
29+
terserOptions: {
30+
compress: {
31+
passes: 2,
32+
inline: 1,
33+
dead_code: true,
34+
unused: false,
35+
reduce_funcs: false,
36+
reduce_vars: false,
37+
},
38+
mangle: true,
39+
},
40+
}),
41+
],
42+
} : {},
43+
devtool: isProd ? false : 'source-map',
44+
};
45+
};

0 commit comments

Comments
 (0)