Modifier le fichier

Fichier bundle.json

Le fichier bundle.json représente les bundles à générer par la chaîne de build front.

Niveau pricipal

Il y a trois entrées principales dans ce fichier :

Bundle

Les sections styles et scripts ont presque tout en commun.

Il s'agit d'un objet dont chaque entrée définit un bundle.

Chaque bundle contient les informations suivantes :

  • extends (string) : référence un autre bundle dont les fichiers et les langues seront ajoutés au bundle courant (en premier)
  • abstract (boolean) : un bundle abstrait ne génère pas de fichier, il doit être étendu dans un autre bundle (il n'est pas nécessaire qu'un bundle soit abstrait pour être étendu)
  • files (string[]) : la liste des fichiers js ou css contenu dans le bundle
  • target (string) : le dossier cible (défaut : 'static/css' ou 'static/js')
  • hash (boolean) : permet d'empêcher la création du hash dans le nom du fichier
  • lang (string[]) : permet de décliner les bundles en plusieurs langues, les fichiers de langue doivent être référencés avec ${lang}

Externals

Les scripts js pouvant dépendre d'une librairie externe, il faut déclarer celle-ci ici.

Le bundle l'utilisant devra alors le déclarer :

Il s'agit alors d'un objet dont les clés sont les références dans le script et les valeurs le nom de l'external.

{
  "externals": {
    "jQuery": "jQuery",
    "jquery": "jQuery",
    "jquery-ui": "jquery-ui",
    "jquery.validate": "jQuery.validate"
  }
}

Exemple de fichier

Ceci n'est qu'un exemple recomposé de plusieurs fichiers

{
  "externals": {
    "jQuery": "/adminsite/scripts/libs/jquery-1.11.0.js",
    "jquery-ui": "/adminsite/scripts/libs/jquery-ui-1.10.3.custom.js",
    "jquery.validate": "/adminsite/scripts/libs/validate/jquery.validate-1.13.1.js",
    "Choices": "/adminsite/scripts/libs/choices/assets/scripts/dist/choices.min.js",
    "Sortable": "/adminsite/scripts/libs/Sortable.js",
    "CKEDITOR_HELPER": "/adminsite/scripts/libs/ckeditor-helper.js"
  },
  "styles": {
    "common": {
      "abstract": true,
      "files": [
        "sass/common.scss"
      ]
    },
    "styles-dsi": {
      "extends": "common",
      "files": [
        "sass/jsp/styles/mode_connecte.scss"
      ]
    },
    "styles-print": {
      "files": [
        "sass/jsp/styles/impression.scss"
      ]
    },
    "complement": {
      "files": [
        "sass/jsp/styles/complement.scss"
      ],
      "target": "/jsp/styles",
      "hash": false
    },
    "screen": {
      "files": [
        "sass/jsp/styles/screen.scss"
      ],
      "target": "/jsp/styles",
      "hash": false
    },
    "jQueryCSS": {
      "files": [
        "webapp/jsp/scripts/libs/css/magnific-popup.css"
      ]
    }
  },
  "scripts": {
    "scriptsFo": {
      "files": [
        "webapp/adminsite/scripts/libs/css/jquery-ui-1.10.4.custom.css",
        "webapp/adminsite/scripts/libs/css/jquery.kmultiselect-0.1.1.css",
        "webapp/adminsite/scripts/libs/css/jquery.kmonoselect-0.1.0.css",
        "webapp/adminsite/scripts/libs/css/jquery.dataTables.css",
        "webapp/adminsite/scripts/libs/css/jquery.dataTables_themeroller.css",
        "webapp/jsp/scripts/frontoffice-i18n_${lang}.js",
        "webapp/jsp/scripts/libs/tabindex-override.js",
        "webapp/jsp/scripts/menu.js",
        "webapp/jsp/scripts/validation.js",
        "webapp/jsp/scripts/frontoffice.js",
        "webapp/jsp/scripts/galeries.js",
        "webapp/jsp/scripts/medias.js",
        "webapp/jsp/scripts/headPage.js",
        "webapp/jsp/scripts/onglets.js"
      ],
      "lang": [
        "en",
        "fr_FR"
      ],
      "externals": {
        "jQuery": "jQuery",
        "jquery": "jQuery",
        "jquery-ui": "jquery-ui",
        "jquery.validate": "jQuery.validate",
        "Choices": "Choices",
        "Sortable": "Sortable",
        "CKEDITOR_HELPER": "CKEDITOR_HELPER"
      }
    }
  }
}