Releases: DorianGrey/ng-webpack-template
14.0.0 "service worker"
I've decided to make this a major release instead of a minor one, since the default build and runtime behavior was changed, which might be breaking for some setups, although it's only an addition technically.
Service worker
As a new PWA capability, this release will now always generate a service worker and utilize it if possible. I've set up a particular doc that explains its setup, how it is used and how you might adopt it to your particular requirements:
https://github.com/DorianGrey/ng-webpack-template/blob/master/docs/service_worker.md
Please file an issue if you are facing any problems.
Lighthouse report
A lighthouse report has been added for both AoT and AoT with build optimizer modes and can be found in this directory in both HTML and JSON format:
https://github.com/DorianGrey/ng-webpack-template/tree/master/lighthouse-report
The recently added PWA features improved the ratings a lot, even though there is still room for optimization.
Notable dependency updates
- Angular has been updated to ^4.4.3. This should have any reasonable impact on exisiting code. The changelog can be found here.
- Prettier has been updated to ^1.7.0. This might result in slightly different formatting of your code. Please take a look at the particular release notes: https://github.com/prettier/prettier/releases/tag/1.7.0
- Electron was sticked to 1.7.8 for the moment. During development, I updated it to ^1.8.0, however there does not seem to be a download attached to this release any longer, so CI failed recently.
13.0.0 "Usability rework"
Another major release, this time because of a lot of changes to the usability of this project regarding development and production mode.
The particular changes have been listed in a separate migration document:
https://github.com/DorianGrey/ng-webpack-template/blob/master/MIGRATION.md
In addition, you might want to take a look at the description of the intended changes here: #7
PWA abilities did not make it into this release completely, esp. the service worker still takes a bit of work for proper integration and thus is not yet included.
Additional changes
Browser for test execution changed
The browser for unit test execution was changed to Electron, instead of PhantomJS. The latter does not seem to be any longer actively maintained. I've checked out using Chrome in headless mode, but since this requires a bit more setup, I decided to go with Electron for the moment. Note that refering to the issue above, I'm still considering to switch to jest in this project once it is more thoroughly tested for more complex angular application.
If you face any problems with it, check out the troubleshooting guide.
Relevant dependency updates (changes >= minor level)
prettier
Prettier was updated to 1.6.1, and received several changes and optimizations in 1.6.0 that affect the way it formats code. See the release notes for details.
TypeScript
This release includes the most recent typescript version 2.5.2. That version does not include breaking changes, so it should not break any of your code. See the release announcement for details.
Other technical changes
- The engine restrictions have been updated to:
- npm: >=5
- yarn: >=0.27
- In preparation of the move to node.js 8.x once it becomes LTS (currently scheduled for october 2017), builds and unit test are now executed for both node.js 6 and 8 on the CI.
12.0.0
Another major release, most notably due to the ngrx-update.
ngrx
The ngrx libraries have been updated to version 4. This includes some breaking changes - see the official migration guide:
https://github.com/ngrx/platform/blob/master/MIGRATION.md
This repo's migration commit might be useful as well: 200cb00
Note that the actions have to be changed to use more type-safe versions, as illustrated and recommended in the ngrx example app. As a result, all ActionCreator
helpers have been removed, since they no longer useful. The docs have been updated accordingly.
When updating, you will receive a warning about a non-matching peer-dependency from ngrx-store-freeze
. For the moment, you might safely ignore it.
Another note about the router
of the store: This values inside are stripped down from the whole snapshot using this serializer:
https://github.com/DorianGrey/ng-webpack-template/blob/e7b01a5793ba250e9d84cca3ef8d64c7e9fcabfe/src/app/app.store.ts#L98
Cutting this down was required to get both the dev-tools and the store-freeze ability working, but that should not have any negative effect on everything else. Most of the values referenced by the snapshot are related to the rendered view and things linked to it. Feel free to adjust this serializer to your particular requirements, but test it thoroughly.
Other changes
- Commits are now tested on appveyor in addition to travis to make sure that everything works fine on Windows.
- Bumped all dependencies to most recent versions.
11.1.0
Only a minor update this time.
Most notable updates
- Webpack => 3.5.3: https://github.com/webpack/webpack/releases/tag/v3.5.0 et. al.
- tslint => 5.6.0: https://github.com/palantir/tslint/releases/tag/5.6.0
Other notable changes
rxjs
version got sticked to 5.4.2, since the most recent 5.4.3 seems to cause problems with currently used ngrx
version. Seems it's possible to be fixed once I can merge #5 to bump ngrx
to 4.x.
11.0.0
ngrx 4.0
This is not included yet, since there are some issues regarding the freeze
mode and the tools, both of which are used in development. See the PR for the current progress: #5
stylelint 8.0
A major change that broke some things, e.g. by removing or renaming some rule. Took this major change as a chance to add more rules to the set, namely the standard config and an additional set specifically for scss
. These are used as mentioned below:
- stylelint: 8.0.0
- stylelint-config-standard: 17.0.0
- stylelint-scss: 1.5.1
angular 4.3
Angular was bumped to 4.3.x (4.3.3 atm.).
webpack 3.4
Webpack was updated to 3.4.1 - see their release notes for details:
https://github.com/webpack/webpack/releases/tag/v3.4.0
https://github.com/webpack/webpack/releases/tag/v3.4.1
ChangeDetectionStrategy.OnPush
All components are now using ChangeDetectionStrategy.OnPush
for change detection. This does not break the demo components.
ngo => bo
The optimizer previously named ngo
is now officially contained as build-optimizer
in the angular_devkit. I've updated the task names to reflect this renaming. Note that this tool is still in experimental state.
karma-remap-istanbul
Instead of karma-remap-coverage, we're now using karma-remap-istanbul, since the first one does not seem to be maintained any longer. Besides, the latter seems to generate more precise coverage reports.
This should not have any impact on your project. Just note that we've added two more reporters for formats that are widely used in several CI environments:
- lcovonly: Creates a lcov report at test-results/coverage/lcov.info
- cobertura: Creates a cobertura report at test-results/coverage/coverage.xml
Other stuff
- Several docs have been cleaned up.
- The node version referenced in the provided
.nvmrc
was bumped to 6.11.1.
10.0.0
Another major release with several updates.
In most cases, these should negatively affect your project, or break too many things at once.
An overview of this release's main features/updates:
TypeScript 2.4
See
https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#typescript-24
https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#typescript-24
for details. It almost any case, this should not cause any breaking changes to your project, except in case you've been too relaxed when using generics, since this version increases the type-checking for them.
Webpack 3.2
Again, this shouldn't be a breaking change for your project, except in case you were using deprecated features that got wiped out in this release.
The support for scope hoisting with the new ModuleConcatenationPlugin
is integrated in production builds. See the official announcement for details:
https://medium.com/webpack/webpack-3-official-release-15fd2dd8f07b
Ngo
This release added build versions that are utilizing ngo for optimizing the production bundle's size, esp. the vendor bundle. In case of this template, it decreased the vendor bundle's size by more than 50KB (minified). Since it adds some code to optimize minification via UglifyJs, this build option does notwork in conjunction with the closure compiler.
Beware: Since ngo is still in an experimental state, the whole feature should be considered experimental as well.
Webpack bundle analyzer
The bundle-analyzer is now executed on each production mode build, instead of being a separate task. The results are generated as HTML and JSON to a builtStats
folder in the root directory.
TsLint
I've tightend the linter's grip a bit by extending tslint:recommended
, and relaxed it via tslint-config-prettier
. Just adopt the rules to your particular requirements - the current set is just one I've had good experience with.
A note about the latter extension: It disables any linter rules aiming at code formatting so that they won't interfere with prettier (see next section). If you've got some of these in you config file, make sure to remove them if you don't want tslint and prettier to fight against each other.
Prettier
The template now uses prettier to format the sources and configs. Formatting is automatically applied on each git commit
, powered by husky with optimized execution via lint-staged.
9.0.0
Another major release.
However, the only breaking change is introduced by ngx-translate which bumped to 7.0.x. Not sure if that affects anyone, but for the sake of the story, I'll follow this version bump as a major one.
Some additional updates to note:
Application dependencies
- Angular => 4.2.x
Dev. dependencies
- TSLint => 5.4.x
- stylelint => 7.11.x
8.0.1
Fixes duplicated stylelint output.
8.0.0
This release contains some breaking changes w.r.t. the used tools. In case you did not modify the build process of your cloned version of this template, these changes should not have any negative impact on your development and build process and should be easy to merge.
ts-loader
This template is now using ts-loader in conjunction with fork-ts-checker-webpack-plugin for both transpilation and linting the typescript code, instead of awesome-typescript-loader and a custom solution for linting.
Using this combination provides enhanced build and rebuild performance, and also includes linter rules which require type-checking with a reasonable performance due to instance sharing.
stylelint-webpack-plugin
This template is now using the stylelint-webpack-plugin in favor of the previously used custom linter process. It's not only easier to maintain, but also provides enhanced output formatting, which not only includes errors, but also deprecation messages from the linter itself.
7.0.0
Breaking changes
This release includes several potentially breaking changes from various dependencies:
- TsLint
- Autoprefixer
- postcss-loader and its dependency updates of PostCSS, browserlist etc.
If you customized the corresponding configurations, you should also checks the changelogs of these packages for further information.
New features
The postcss step now utilizes postcss-flexbugs-fixes for automatically fixing common pitfalls and known cross-browser issues with flexbox layouts.
Other updates
Several other packages like the @angular/* packages received at most minor updates, so they should not break anything.