October 16th, 2015

We are proud to announce LaxarJS v1.1.0

The overall goal of the release is to simplify installing existing widgets and controls, and to make it easier to create and share artifacts that were built using integration technologies other than AngularJS.

This release introduces the following new features:

  • We provide a new scaffolding mechanism based on Yeoman. The new NPM package generator-laxarjs replaces the previously used grunt-init templates. It requires less prerequisites, is even easier to use and remembers scaffolding choices within each project, so that you don’t have to repeat yourself when creating multiple artifacts.

  • Widgets no longer have to be installed under includes/widgets, as long as they can be found by RequireJS. For example, widgets may now be installed using Bower, so that their dependencies are automatically installed for you. To reference a widget in this manner, use amd:my-widget as the widget reference in your Page definitions (#129, manual).

  • Controls may now be written in any integration technology, and no longer only as AngularJS directives. For example, you can now write widgets and controls as React components, by using the new laxar-react-adapter with LaxarJS v1.1 (#210).

  • The new standalone widget-testing framework laxar-mocks is now available. In contrast to the old built-in testing, it supports arbitrary integration technologies (such as plain or react) and has much better manuals and API docs. Also, it uses jasmine v2.3, helps with DOM-testing, and is fully asynchronous. If you used the new yeoman generators to create your application and widgets, you are all set for using laxar-mocks (#127).

  • Travis-CI tests are now setup for most of the LaxarJS GitHub repository, further improving the reliability of our artifacts (#219).

Together with laxar itself, we released a v1.1.0 of the grunt-laxar tasks for Grunt:

  • The tasks were restructured with large portions being rewritten. The new tasks are all based directly on the application’s flow definitions, allowing you to create multiple bundled CSS and JS files for different flow definitions within your project. Also, using the new tasks reduces the necessary configuration in the Gruntfile.js to almost zero (#41), because the tasks infer the correct configuration (for watching, optimization, file listings etc.) based on the application artifacts.

  • Merging of require_config.js files is now automatically performed by the new grunt-laxar task laxar-merge-require-config, making installation and maintenance of widgets, controls and their dependencies even simpler (#74).

  • Users of Compass can now also use grunt-laxar-compass to automatically compile widget SCSS when it has changed, while always using the correct theme configuration.

  • The new task laxar-info can be queried to get information about application artifacts. For example, it tells you where LaxarJS will expect CSS files for a given widget, and which CSS file is actually used with a given theme (#72).

The companion library laxar-patterns was also upgraded to v1.1.0 and contains the following changes:

  • Support for validation handlers is now available. This should simplify resource validation and message-handling (#46).

  • Resource handlers can now be configured to gracefully ignore missing resource configuration. The widget.json is the intended place to decide if configuration is mandatory for a given resource topic (#51), but by default the handler will still warn about missing configuration to catch programming errors.

Since v1.1.0 is a minor release, there should be no breaking changes. However, we strongly recommend upgrading your project infrastructure to use the new grunt tasks (which is very simple), as the old tasks are deprecated and due to be removed for LaxarJS v2.0.0.