1.1.13 • Published 12 months ago

zkless-engine v1.1.13

Weekly downloads
83
License
MIT
Repository
github
Last release
12 months ago

zkless-engine

Compile ZK Themes using the lesscss compiler.

Features

  • convert ZK @import into a LESS valid path

Install / Run

Requires node >=10.16

Use globally

npm install zkless-engine -g
zklessc [params]

Use locally (add to package.json)

npm install zkless-engine --save-dev
npx zklessc [params]

Available parameters

paramdescriptiondefault/value
-s/--sourcesource folder to compile/watchsrc/main/resources/web
-o/--outputoutput folder for .css.dsp filestarget/classes/web
-e/--extensionoutput file extension.css.dsp (optional)
-c/--compressminify output filesfalse (optional)
-i/--importsspecify multiple folders for @import resolution- (optional/multiple)
--less-optsjson string with custom less options{}
-w/--watchwatch files after successful compilefalse (optional)
--live-reload-portport for live reloading server50000 (optional)

Examples

Basic

Compile a custom zktheme cloned from zk theme template project:

(1) long params, (2) shortcut params and watch, (3) and compress

    zklessc --source src/archive/web --output target/classes/web/mytheme
    zklessc -s src/archive/web -o target/classes/web/mytheme -w
    zklessc -s src/archive/web -o target/classes/web/mytheme -cw

Include external folders into build

See less include paths

Assume the folder structure:

root
- mytheme 
  - src/archive/web/js/zul/wgt/button/less
    - button.less
    - _mybutton.less
- 3rdparty
  - amazingtool
    - shapes.less
- styleguide
  - corporatecolors.less

By executing the command ...

zklessc -s src/archive/web -o target/classes/web/mytheme -i ../3rdparty -i ../styleguide

... less will find @imports based on those folders as well

button.less

@import "/zul/less/_header.less"; /*absolute import based on source directory (-s)*/
/*omitted zk styles*/
/*your imports*/
@import "_mybutton.less"; /*relative import*/

_mybutton.less

@import "/amazingtool/shapes.less"; /*will be found below "-i ../3rdparty"*/
@import "/corporatecolors.less"; /*will be found below "-i ../styleguide"*/
/*my styles*/

.z-button {
    color: @corporateGreen; /* using a variable from corporatecolors.less */
    .amazing-shape-rounded(10px);
}

Maven integration

Since zklessc is a plain command line tool it can be integrated into a maven build using the standard exec-maven-plugin.

e.g. run zklessc during the process-resources phase:

...
<build>
  <resources>
    <!-- handle class web resources separately below -->
    <resource>
      <directory>${project.basedir}/src/archive</directory>
      <excludes>
        <exclude>web/**</exclude>
      </excludes>
    </resource>
    <!-- copy non-less into theme folder (here artifactId == theme name), 
    less files will be handled by plugin below -->
    <resource>
      <directory>${project.basedir}/src/archive/web</directory>
      <excludes>
        <exclude>**/*.less</exclude>
      </excludes>
      <targetPath>${project.build.outputDirectory}/web/${project.artifactId}</targetPath>
    </resource>
  </resources>
  <plugins>
    ...
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.6.0</version>
      <executions>
        <execution>
          <id>compile-less</id>
          <phase>process-resources</phase>
          <goals>
            <goal>exec</goal>
          </goals>
          <configuration>
            <executable>zklessc</executable>
            <arguments>
              <argument>--source</argument>
              <argument>${project.basedir}/src/archive/web</argument>
              <argument>--output</argument>
              <argument>${project.build.outputDirectory}/web/${project.artifactId}</argument>
              <argument>--compress</argument>
            </arguments>
          </configuration>
        </execution>
      </executions>
    </plugin>
    ...

Then execute directly via:

mvn process-recources

or build the project normally

mvn clean package

Gradle usage

Call the same command from an Exec-task

Live Reloading (during development)

When --watch is enabled an http server is automatically started on port 50000 (or --live-reload-port).

By adding the following scripts to your zk application (zul page or globally) the page will be notified about zkless compile results.

    <script src="http://localhost:50000/socket.io/socket.io.js"/>
    <script src="http://localhost:50000/zklessLiveReloadStyles.js"/>
    <!--<script src="http://localhost:50000/zklessLiveReloadStylesResize.js"/>-->
    <!--<script src="http://localhost:50000/zklessLiveReloadPage.js"/>-->

You have to add the socked.io client script provided by the server. Besides, that there are 3 options for different behaviour.

zklessLiveReloadStyles.js -> reload only stylesheets after compilation

zklessLiveReloadStylesResize.js -> reload stylesheets and call zUtl.fireSized (useful when changing paddings/margins)

zklessLiveReloadPage.js -> reload the whole page

Auditing package dependencies for security vulnerabilities

npm audit

After fixing security issues, run test:

npm test

Publish New version to npm repository

npm publish

1.1.13

12 months ago

1.1.12

2 years ago

1.1.11

2 years ago

1.1.10

3 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.1.22

5 years ago

0.1.21

5 years ago

0.1.20

5 years ago

0.1.19

6 years ago

0.1.18

6 years ago

0.1.17

9 years ago

0.1.16

9 years ago

0.1.15

10 years ago

0.1.14

10 years ago

0.1.13

10 years ago

0.1.12

10 years ago

0.1.11

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago