/liferay-theme-hooks

Hooks for liferay-theme-tasks for automating prefixing/transpiling

Primary LanguageJavaScriptGNU Lesser General Public License v2.1LGPL-2.1

SMC's Liferay Theme Hooks

liferay-theme-hooks offers some packages that are meant to be used in combination with Liferay Theme Tasks in order to make working on a Liferay theme a more modern and pleasurable experience.

In particular we let developers

  • write modern CSS and automatically add vendor prefixes through Autoprefixer,
  • write modern JavaScript and automatically transpile them with Babel.

These hooks are run for you when the build or deploy tasks are run.

Installation

After you created your theme (for example with the Liferay Theme Generator) you can add our hooks by installing them inside your root folder:

cd my-awesome-theme
# With npm:
npm install --save-dev @smclab/liferay-theme-autoprefixer-hook
npm install --save-dev @smclab/liferay-theme-babel-hook
# Or alternatively with Yarn:
yarn add --dev @smclab/liferay-theme-autoprefixer-hook
yarn add --dev @smclab/liferay-theme-babel-hook

After installing the desired hook add the following to your liferay theme's package.json

{
  "name": "my-awesome-theme",
  // ...the rest of your package.json...
  "liferayTheme": {
    "hookModules": [
      // Here you can choose which hook to keep
      "@smclab/liferay-theme-autoprefixer-hook",
      "@smclab/liferay-theme-babel-hook"
    ]
  }
}

Configuring supported browsers

Both hooks let you specify a list of browsers your project needs to support. The list of features that need to be transpiled/autoprefixed will be automatically retrived so that you can focus on the important stuff!

For doing this we use Browserslist.

The list of browsers you want your theme to support can be defined in the package.json or in a .browserslistrc file in your theme's root direcotry.

If you want, for example, to support all the supported browsers supported by Liferay you can use the following file .browserslistrc

last 1 Chrome versions
last 1 Firefox versions
last 1 Edge versions
ie 9
ie 10
Safari 8
Safari 10

or you can add the following to you liferay theme's package.json

{
  "name": "my-awesome-theme",
  // ...the rest of your package.json...
  "browserslist": {
    "browsers": [
      "last 1 Chrome versions",
      "last 1 Firefox versions",
      "last 1 Edge versions",
      "ie 9",
      "ie 10",
      "Safari 8",
      "Safari 10"
    ],
    "cascade": false
  }
}

Available hooks

@smclab/liferay-theme-autoprefixer-hook

This hook will execute gulp-autoprefixer after the css is delivered to the build directory.

The browser compatibility will be retrived through Browserslist settings.

@smclab/liferay-theme-babel-hook

This hook will compile your javascript source code by using gulp-babel.

The browser compatibility will be retrived through Browserslist settings.

Contributing

If you want to contribute to this repository you are welcome! Just keep in mind that we have some contribution rules that you can find here.

License

This library, SMC's Liferay Theme Hooks, is free software ("Licensed Software"); you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; including but not limited to, the implied warranty of MERCHANTABILITY, NONINFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA