Giter Club home page Giter Club logo

aem-site-template-builder's Introduction

AEM Site Template Builder

This repository contains scripts for building AEM Site Templates.

Installation

Required dependencies: node, npm, mvn

cd your-aem-site-template
npm install @adobe/aem-site-template-builder --save-dev

Usage

To build your AEM Site Template just go into its folder and run command:

npx aem-site-template-builder

Expected structure of the repository

files/                  Optional, folder with the UI kit XD file and possibly other files.
    design.xd
previews/               Folder with screenshots of the site template.
    buttons.png
    navigation.png
    teaser.png
site/                   Content module that contains the templates and policies.
theme/                  Optional, theme sources (CSS, JS). It's a npm package with dev-dependency to aem-site-theme-builder.
package.json            Includes meta informations.
    - version           The version of the Site Template.
    - name              Unique name to help AEM to only contain a Site Template once.
    - title             Name of Site Template displayed in AEM UI.
    - description       Free-formed text that can contain some HTML like paragraphs, lists, links.
    - createdBy         Author or vendor.
    - useCases          List of strings that describe the purpose of the site template.
    - docsUrl
    - showcaseUrl
    - sourceRepositoryUrl
    - license

NPM scripts in your template

Template Builder assumes that your AEM Site Template will contain npm run build npm script in the /theme folder which will compile the theme sources into production ready compiled code available in /theme/dist folder.

Compiled site template artifact

files/                  Optional, folder with the UI kit XD file and possibly other files.
    design.xd
previews/               Folder with screenshots of the site template.
    buttons.png
    navigation.png
    teaser.png
site.zip                Content package that contains the templates and policies.
theme.zip               Optional, contains compiled theme.
theme-sources.zip       Optional, zipped theme sources folder.

Local development

For development purposes you can build local npm package which will provide aem-site-template-builder command. You need access to AEM Site Template Builder repository.

  1. Clone AEM Site Template Builder repository.
  2. cd aem-site-template-builder
  3. npm link

Now you should have aem-site-template-builder command available globally as a command line. All changes that you will provide for the aem-site-template-builder script sources will get automatically applied to the linked command.

Release and publish

Run the "Release and publish" GitHub workflow and provide the semantic version you're about to release.

Contributing

Contributions are welcomed! Read the Contributing Guide for more information.

Licensing

This project is licensed under the MIT License. See LICENSE for more information.

aem-site-template-builder's People

Contributors

bartoszglow avatar basecode avatar bpauli avatar dependabot[bot] avatar vladbailescu avatar vtsaplin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aem-site-template-builder's Issues

Site template builder relies on Site Template being a git repo

Problem is in the way that template-builder builds the aem-site-template-basic-x.x.x.zip file. It relies on the fact that Site Template should be a git repository so it can create theme-sources folder by filtering only necessary files from the theme folder based on its .gitignore. To do that it has to be a proper git project (with .git folder).

Expected Behaviour

theme-sources.zip file is part of aem-site-template-basic-4.0.1.zip file created by running npx aem-site-template-builder therefore theme sources can be downloaded from AEM.

Actual Behaviour

theme-sources.zip file is missing in aem-site-template-basic-4.0.1.zip file created by running npx aem-site-template-builder therefore theme sources can not be downloaded from AEM.

Reproduce Steps

  1. Download a source-code from Site Template Basic 4.0.1.
  2. Unzip aem-site-template-basic-4.0.1.zip.
  3. Go to folder aem-site-template-basic-4.0.1.
  4. Run npx aem-site-template-builder.
  5. Go to AEM and upload your newly created aem-site-template-basic-4.0.1.zip. (make sure to not upload source code but generated package)
  6. Try to download theme sources.

Further Explanation

aem-site-template-basic-x.x.x.zip file created by running Reproduce Steps does not contain theme-sources.zip file in the package. Due to that you can’t download theme sources in AEM.

Proposed Solution

  • Use graceful degradation approach and in case Site Template is not a git repository include all of theme content into theme-sources.zip file.
  • Create theme-sources.zip before compiling and building theme so it is less polluted.

Workarounds

For now there are 2 workarounds:

  • Download Site Template sources by cloning the github repository.
  • Download Site Template in the way you do know (as source-code from specific release). After downloading go inside and create git project by git init .

Remove usage of general zip command

Remove usage of built-in zip command from the builder script to improve consistency and safety. Replace it with already used best-zip alternative.

Dependencies cause `npm audit` to fail

Expected Behaviour

Up to date dependencies don't cause audit issues which can break CI/CD builds.

Actual Behaviour

npm audit fails:

engine.io  <4.0.0
Severity: high
Resource exhaustion in engine.io  - https://github.com/advisories/GHSA-j4f2-536g-r55m
No fix available
node_modules/engine.io
  socket.io  1.0.0-pre - 2.4.1
  Depends on vulnerable versions of engine.io
  node_modules/socket.io
    browser-sync  >=1.0.0
    Depends on vulnerable versions of socket.io
    node_modules/browser-sync
      @adobe/aem-site-theme-builder  *
      Depends on vulnerable versions of browser-sync
      Depends on vulnerable versions of shelljs
      node_modules/@adobe/aem-site-theme-builder

shelljs  <0.8.5
Severity: high
Improper Privilege Management in shelljs - https://github.com/advisories/GHSA-4rq4-32rv-6wp6
No fix available
node_modules/shelljs
  @adobe/aem-site-theme-builder  *
  Depends on vulnerable versions of browser-sync
  Depends on vulnerable versions of shelljs
  node_modules/@adobe/aem-site-theme-builder

Reproduce Scenario (including but not limited to)

Run npm audit from theme folder

Steps to Reproduce

Platform and Version

Sample Code that illustrates the problem

Logs taken while reproducing problem

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.