diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index f40c8859..66dca3de 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -35,7 +35,7 @@ jobs: uses: actions/checkout@v4 - name: Setup JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: ${{ matrix.distribution }} java-version: ${{ matrix.java }} diff --git a/.github/workflows/maven-deploy.yml b/.github/workflows/maven-deploy.yml index 83c03ac8..10214d48 100644 --- a/.github/workflows/maven-deploy.yml +++ b/.github/workflows/maven-deploy.yml @@ -25,7 +25,7 @@ jobs: git config --global user.name "${{ secrets.GH_SITE_DEPLOY_NAME }}" - name: Setup JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: temurin java-version: 11 diff --git a/changes.xml b/changes.xml index 471ab225..8495ac66 100644 --- a/changes.xml +++ b/changes.xml @@ -23,6 +23,18 @@ xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 https://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd"> + + + Switch frontend to ES6 modules. + + + Update to AEM 6.5 SP20. + + + Update dependencies. + + + Update to Handler 2.x. diff --git a/pom.xml b/pom.xml index 84e01e73..377aa779 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ io.wcm.maven.archetypes io.wcm.maven.archetypes.aem - 3.8.8 + 3.8.10 maven-archetype wcm.io Maven Archetype for AEM @@ -40,7 +40,7 @@ tooling/maven/archetypes/aem - + 3.1.0 @@ -125,6 +125,10 @@ org.apache.maven.plugins maven-archetype-plugin ${maven.archetype.version} + + + false + diff --git a/src/main/resources/META-INF/maven/archetype-metadata.xml b/src/main/resources/META-INF/maven/archetype-metadata.xml index 1ef7d39a..b5af4743 100644 --- a/src/main/resources/META-INF/maven/archetype-metadata.xml +++ b/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -176,7 +176,7 @@ README.md - clientlib.config.js + clientlib.config.cjs package.json src\index.* diff --git a/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml b/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml index 468ed07f..4cddb476 100644 --- a/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml +++ b/src/main/resources/archetype-resources/config-definition/src/main/roles/__projectName__-aem-cms.yaml @@ -14,7 +14,7 @@ files: #if ( $optionAemVersion == '6.5' && $optionAemServicePack == 'y' ) # AEM Service Pack -- url: mvn:adobe.binary.aem.65.servicepack/aem-service-pkg/6.5.19.0/zip +- url: mvn:adobe.binary.aem.65.servicepack/aem-service-pkg/6.5.20.0/zip dir: packages modelOptions: delayAfterInstallSec: 30 diff --git a/src/main/resources/archetype-resources/frontend/.nvmrc b/src/main/resources/archetype-resources/frontend/.nvmrc index 6f0223c1..2efc7e11 100644 --- a/src/main/resources/archetype-resources/frontend/.nvmrc +++ b/src/main/resources/archetype-resources/frontend/.nvmrc @@ -1 +1 @@ -v16.15.0 \ No newline at end of file +v20.11.1 \ No newline at end of file diff --git a/src/main/resources/archetype-resources/frontend/clientlib.config.js b/src/main/resources/archetype-resources/frontend/clientlib.config.cjs similarity index 100% rename from src/main/resources/archetype-resources/frontend/clientlib.config.js rename to src/main/resources/archetype-resources/frontend/clientlib.config.cjs diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js index 6c7d7686..2fe1a508 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/index.js @@ -1,9 +1,9 @@ import path from "path"; -import merge from "webpack-merge"; +import { merge } from "webpack-merge"; -import { pathConfig } from "../../path.config"; -import { entry, output } from "./setup"; -import { clean, es6, scss, handlebars, html, copy } from "./tasks"; +import { pathConfig } from "../../path.config.js"; +import { entry, output } from "./setup/index.js"; +import { clean, es6, scss, handlebars, html, copy } from "./tasks/index.js"; export const baseConfig = merge(clean, es6, scss, handlebars, html, copy, { entry, diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js index 5a2ccbf3..2df1f40f 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/index.js @@ -1,2 +1,2 @@ -export * from "./entryConfig"; -export * from "./outputConfig"; +export * from "./entryConfig.js"; +export * from "./outputConfig.js"; diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js index 4f88bd5e..6c2495aa 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/setup/outputConfig.js @@ -1,5 +1,5 @@ import path from "path"; -import { pathConfig } from "../../../path.config"; +import { pathConfig } from "../../../path.config.js"; export const output = { path: path.resolve(pathConfig.paths.target), diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js index f903f89f..1f3b07ae 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/clean.js @@ -1,6 +1,6 @@ import path from "path"; import { CleanWebpackPlugin } from "clean-webpack-plugin"; -import { pathConfig } from "../../../path.config"; +import { pathConfig } from "../../../path.config.js"; const pathsToClean = [pathConfig.paths.target]; diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js index 51d0cfbe..f768c6d2 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/copy.js @@ -1,6 +1,6 @@ import path from "path"; import CopyWebpackPlugin from "copy-webpack-plugin"; -import { pathConfig } from "../../../path.config"; +import { pathConfig } from "../../../path.config.js"; export const copy = { plugins: [ diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js index fc7ef352..07b33872 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/handlebars.js @@ -1,5 +1,5 @@ import path from "path"; -import { pathConfig } from "../../../path.config"; +import { pathConfig } from "../../../path.config.js"; export const handlebars = { module: { diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js index d281aff4..5ea85289 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/index.js @@ -1,6 +1,6 @@ -export * from "./es6"; -export * from "./handlebars"; -export * from "./scss"; -export * from "./html"; -export * from "./clean"; -export * from "./copy"; +export * from "./es6.js"; +export * from "./handlebars.js"; +export * from "./scss.js"; +export * from "./html.js"; +export * from "./clean.js"; +export * from "./copy.js"; diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js index 9d9a7d18..af12c8c3 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/base/tasks/scss.js @@ -1,5 +1,5 @@ import MiniCssExtractPlugin from "mini-css-extract-plugin"; -import { pathConfig } from "../../../path.config"; +import { pathConfig } from "../../../path.config.js"; export const scss = { plugins: [ diff --git a/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js b/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js index 6b14b7e1..9309bfea 100644 --- a/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js +++ b/src/main/resources/archetype-resources/frontend/config/webpack/dev/index.js @@ -1,7 +1,7 @@ -import webpackMerge from "webpack-merge"; -import { devServer } from "./server"; +import { merge } from "webpack-merge"; +import { devServer } from "./server.js"; -export const devConfig = webpackMerge(devServer, { +export const devConfig = merge(devServer, { devtool: "source-map", bail: true }); diff --git a/src/main/resources/archetype-resources/frontend/package.json b/src/main/resources/archetype-resources/frontend/package.json index 8b71e081..da183cd3 100644 --- a/src/main/resources/archetype-resources/frontend/package.json +++ b/src/main/resources/archetype-resources/frontend/package.json @@ -4,11 +4,12 @@ "version": "1.0.0", "description": "Frontend build pipeline for AEM projects", "main": "index.js", + "type": "module", "scripts": { "start": "webpack-dev-server --mode development --open", "build:dev": "webpack --mode development", "build:prod": "webpack --mode production", - "build:clientlibs": "npm run build:prod && clientlib" + "build:clientlibs": "npm run build:prod && clientlib clientlib.config.cjs" }, "dependencies": { "bootstrap": "4.6.2", @@ -17,25 +18,25 @@ }, "devDependencies": { "aem-clientlib-generator": "1.8.0", - "@babel/core": "7.23.6", + "@babel/core": "7.24.1", "babel-loader": "9.1.3", "babel-plugin-transform-class-properties": "6.24.1", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "@babel/preset-env": "7.23.6", - "@babel/register": "7.22.15", + "@babel/preset-env": "7.24.1", + "@babel/register": "7.23.7", "clean-webpack-plugin": "4.0.0", - "copy-webpack-plugin": "11.0.0", - "css-loader": "6.8.1", + "copy-webpack-plugin": "12.0.2", + "css-loader": "6.10.0", "handlebars": "4.7.8", "handlebars-loader": "1.7.3", "html-webpack-plugin": "5.6.0", - "mini-css-extract-plugin": "2.7.6", + "mini-css-extract-plugin": "2.8.1", "node-sass": "9.0.0", - "postcss-loader": "7.3.3", - "sass-loader": "13.3.2", - "webpack": "5.89.0", - "webpack-cli": "4.10.0", - "webpack-dev-server": "4.15.1", + "postcss-loader": "8.1.1", + "sass-loader": "14.1.1", + "webpack": "5.90.3", + "webpack-cli": "5.1.4", + "webpack-dev-server": "5.0.4", "webpack-merge": "5.10.0" } } diff --git a/src/main/resources/archetype-resources/frontend/pom.xml b/src/main/resources/archetype-resources/frontend/pom.xml index 3d1b4667..555bd531 100644 --- a/src/main/resources/archetype-resources/frontend/pom.xml +++ b/src/main/resources/archetype-resources/frontend/pom.xml @@ -1,8 +1,7 @@ 4.0.0 -#set( $nodeJsVersion = "20.9.0" ) -#set( $npmVersion = "10.1.0" ) +#set( $nodeJsVersion = "20.11.1" ) ${groupId} @@ -76,8 +75,6 @@ process-resources v${nodeJsVersion} -## Explicitly define NPM version for frontend-maven-plugin to avoid build problems on Jenkins - ${npmVersion} diff --git a/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js b/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js index 3f20c2f5..987a0ad2 100644 --- a/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js +++ b/src/main/resources/archetype-resources/frontend/src/components/customcarousel/customcarousel.js @@ -1,5 +1,5 @@ import $ from "jquery"; -import "bootstrap/js/dist/carousel"; +import "bootstrap/js/dist/carousel.js"; export default () => { $(".carousel").carousel(); diff --git a/src/main/resources/archetype-resources/frontend/src/index.js b/src/main/resources/archetype-resources/frontend/src/index.js index 5f95bbe4..759393ee 100644 --- a/src/main/resources/archetype-resources/frontend/src/index.js +++ b/src/main/resources/archetype-resources/frontend/src/index.js @@ -1,5 +1,5 @@ import $ from "jquery"; -import CustomCarousel from "./components/customcarousel/customcarousel"; +import CustomCarousel from "./components/customcarousel/customcarousel.js"; // Document Ready $(() => { diff --git a/src/main/resources/archetype-resources/frontend/webpack.config.babel.js b/src/main/resources/archetype-resources/frontend/webpack.config.babel.js index c3a3a6a8..0d023348 100644 --- a/src/main/resources/archetype-resources/frontend/webpack.config.babel.js +++ b/src/main/resources/archetype-resources/frontend/webpack.config.babel.js @@ -1,8 +1,8 @@ -import webpackMerge from "webpack-merge"; +import { merge } from "webpack-merge"; -import { baseConfig } from "./config/webpack/base"; -import { devConfig } from "./config/webpack/dev"; -import { prodConfig } from "./config/webpack/prod"; +import { baseConfig } from "./config/webpack/base/index.js"; +import { devConfig } from "./config/webpack/dev/index.js"; +import { prodConfig } from "./config/webpack/prod/index.js"; /** * Get the configuration file based on webpacks `mode` parameter. @@ -27,5 +27,5 @@ export default (_, argv) => { const runMode = argv.mode ? argv.mode : "production"; const runModeConfig = getConfig(runMode); - return webpackMerge(baseConfig, runModeConfig); + return merge(baseConfig, runModeConfig); }; diff --git a/src/main/resources/archetype-resources/parent/pom.xml b/src/main/resources/archetype-resources/parent/pom.xml index 8fc0300a..db0845ba 100644 --- a/src/main/resources/archetype-resources/parent/pom.xml +++ b/src/main/resources/archetype-resources/parent/pom.xml @@ -35,7 +35,7 @@ 2.23.4 #end #if( $optionAcsCommons == "y" ) - 6.3.6 + 6.4.0 #end @@ -163,12 +163,12 @@ io.wcm io.wcm.wcm.parsys - 1.7.2 + 1.7.4 io.wcm io.wcm.wcm.ui.granite - 1.10.2 + 1.10.4 io.wcm @@ -183,17 +183,17 @@ io.wcm io.wcm.handler.url - 2.0.0 + 2.1.0 io.wcm io.wcm.handler.media - 2.0.0 + 2.0.2 io.wcm io.wcm.handler.link - 2.0.0 + 2.1.0 io.wcm @@ -203,7 +203,7 @@ io.wcm io.wcm.wcm.core.components - 2.0.0-2.23.2 + 2.0.2-2.23.2 #end @@ -273,7 +273,7 @@ io.wcm.maven io.wcm.maven.aem-dependencies - #if($optionAemServicePack=="y" || $optionAemServicePackAPI=="y")6.5.19.0000#{else}6.5.0.0005#end + #if($optionAemServicePack=="y" || $optionAemServicePackAPI=="y")6.5.20.0000#{else}6.5.0.0005#end pom import @@ -321,11 +321,11 @@ org.junit junit-bom - 5.10.1 + 5.10.2 pom import -#set( $mockitoVersion = "5.10.0" ) +#set( $mockitoVersion = "5.11.0" ) org.mockito mockito-core