Releases: DorianGrey/ng-webpack-template
20.0.0
This release was originally scheduled a couple of weeks ago... yet, now I can call it a christmas present 🎄 !
Once again, a couple of breaking changes are included. For instructions on how to migrate from version 19, see the migration guide. Please feel free to open an issue if anything in that guide is not clear enough!
The most notable changes:
- Angular is now included in v7 (even though it does not yet include the
ivy
compiler by default) - The migration to
webpack-serve
in v19 was reverted, since the maintenance status of that project andwebpack-dev-server
toggled since then. webpack-chain
replaceswebpack-merge
for building the configuration.- Linting is now available as a separate task that also includes auto-fixing.
The docs received some updates to reflect the most recent changes as well as some deprecated references. Please take a closer look at them to make sure you don't miss anything useful!
For the full set of changes, see the diff: 19.1.1...20.0.0
19.1.1
A small bugfixes release for the file size diff feature introduced in 19.1.0.
Properly comparing the file paths provided by webpack
with those picked up from via glob might contain different path separators on windows, thus they have to be normalized accordingly. The fixed version handles both.
19.1.0
A minor release this time.
Some greater changes are planned and deferred for the next major release, so I decided to put this release before.
Full set of changes can be viewed here:
19.0.0...19.1.0
Overview
Features
uglify-es
was replaced withterser
, resp. their correspondingwebpack
plugins.uglify-es
is no longer maintained, i.e. the bugs it still contains won't be fixed.terser
is a maintained fork. Regarding this issue, a similar change will be adopted to thewebpack
core itself.
In addition, thecache
andparallel
flags have been enabled by default, since they are much more stable onterser
, and improve build performance by quite a margin.- The previously experimental flag
withExperimentalCssOptimization
was removed. Its underlying instability was fixed by moving to a different plugin for CSS optimization, optimize-cssnano-plugin. I.e. this optimization is now always active. - The post-build file size information was extended to also show file size differences, including a indicator for positive/negative/no changes. Note that by default, this is only active for
js
,css
,json
andwebmanifest
files, since others are quite irrelevant. If you think different, feel free to update the regex and glob here: https://github.com/DorianGrey/ng-webpack-template/blob/master/scripts/util/determineFileSizesBeforeBuild.js
Fixes
README adoption
I recognized that the README did not reflect every change made in the 19.0.0 release. This was fixed.
Updates
The most notable minor updates refer to angular
(now at 6.1.7) and rxjs
(now at 6.3.2). All others are either minor or should have no effect on the project (e.g. major update dropping support for node
v6, which isn't supported at all by this project).
19.0.0
It's been quite a while now since the last release ... took me a while to glue all of this together. This release contains a huge set of changes, some of them are breaking.
Full set of changes can be viewed here:
18.0.0...19.0.0
Overview
Tools
- Webpack was updated to V4
- As a result, the long term caching option was dropped - it can no longer be disabled.
- Note that all plugins affected by this update have been updated as well.
- A new build config option
withExperimentalCssOptimization
was added to apply additional stylesheet optimizations usingcssnano
. Note that this might break your overall style under certain conditions, so it is disabled by default (it also breaks the example app due to a curious "optimization" for grid layouts). - hard-source-webpack-plugin was added to improve rebuild speed even further than it already was. Causes the initial build to be a bit slower, but successive build have been at least 10% faster in my tests, so it should be worth it.
- The
workbox
plugin has been changed to import itself from CDN instead of local, since I was facing some issues about the script loading all of its modules even though only a few are referenced, which causes problems by thegoogle-analytics
plugin being blocked from my browser.
- A VSCode extension recommendation file for
tslint
andstylelint
was added. - A new longer in form of signale replaces the former custom implementation. It covers most of the library output (like from the
fork-ts-checker
plugin) was well.
App
- Angular was updated to V6
- RxJS was updated to V6
CI
Travis and AppVeyor are now using node 10 instead of 9 for testing. V10 will become LTS and the end of 2018, thus it's viable to test it quite early, and drop V9 which won't become a LTS version.
Other stuff
mainfest.json
was renamed tomanifest.webmanifest
to match the extension mentioned by the standard.- A lot of code simplification by using async/await instead of raw promises.
- The browserlist used by
autoprefixer
has been moved to thepackage.json
and was adjusted to:
"browserslist": [
">0.25%",
"not ie 11",
"not op_mini all"
]
which provides a global coverage of 86.67%. See: http://browserl.ist/?q=%3E0.25%25%2Cnot+ie+11%2Cnot+op_mini+all
Migration
See the migration guide for details about updating your application and configuration: https://github.com/DorianGrey/ng-webpack-template/blob/master/docs/migration/MIGRATION__19_0_0.md
18.0.0
Among with a couple of minor dependency updates, this release includes an already announced breaking change regarding the unit test setup.
See the full set of changes here:
17.1.0...18.0.0
Unit testing
As previously announced in #13, I've decided to replace the previous karma
based approach for unit tests with jest
- see the ticket for reasons why. The docs have been updated accordingly to reflect the new capabilities.
https://github.com/DorianGrey/ng-webpack-template#unit
See the migration guide for instructions on how to migrate your project to jest.
https://github.com/DorianGrey/ng-webpack-template/blob/master/docs/migration/MIGRATION__18_0_0.md
Oh, and don't worry about the .babelrc
in the project's root directory - it is required to properly transpile lodash-es
, since it includes ES2015 module definitions.
Example layout
The application's example layout has been updated to use a grid-based layout (i.e. display: grid
) and a sidenav for the navigation. As a result, it fits better on small screens. This is mostly for illustration purposes.
17.1.0
Only a minor release this time, since all major changes in the updates are not affecting the current setup.
A list of the most notable changes is listed below. See the full list of changes in the diff:
17.0.0...17.1.0
Behavior changes
The build optimizer is now activated by default for production builds. Just change the corresponding config if you don't want or like this; it has just been activated by default since it should be considered stable enough to do so.
17.0.0
Another major one, but this time not only due to dependency updates.
A list of the most notable changes is listed below. See the full list of changes in the diff:
16.0.0...17.0.0
Libraries
angular
was updated to 5.2.2. Just a minor release, so this should not break anything.ngrx
was updated to 5.0.1. This is only a major release because the minimalrxjs
version was increased to 5.5. This should not break anything in terms of this template, since a matching version was already used before.
Note that I've had to change the import order of the@ngrx/store
related modules due to an issue with the store instrumentation - see here.
Other dependencies
electron
was updated to 1.7.11
.
❗ I've received a notification that older versions contain a security-critical bug, so this update should not be reverted or omitted!
Behavior changes
Chunk naming
Code splitting using @angular/router
does not allow to explicitly provide a name for the particular chunks - as a result, they only get an ID by default. From this release on, those chunks will receive the name of entry file referenced for the splitting process.
rxjs tree-shaking
I've added the path mapping of rxjs
as described in the docs to provide better tree-shaking for its imports. This reduces the bundle size quite significantly.
runtime extraction
For production builds, webpack
now extracts its whole runtime
instead of only the manifest. This is favorable for long term caching.
Service worker revisions
I've faced some bugs regarding the service worker caching that at most appeared when not enough hashing digits have been used. To work around this issue, the revision ID generated by workbox
is no longer removed from the generated service worker file. The size increase of the service worker file should be negligible.
Other changes
CI
As already announced a while ago, this template only supports LTS versions of node
. The CI configurations have been modified to no longer test against node
versions < 8.
16.0.0
Another major release, since at least one dependency pushed a major release as well...
A list of the most notable changes is listed below. See the full list of changes in the diff: 15.0.0...16.0.0
Libraries
Angular
Updated to 5.1.0. See the changelog and the corresponding blog entry for details.
@ngx-translate/core
Updated to 9.0.1. The build system was updated, which causes peer dependencies of rxjs >= 5.5.2 and angular 5.0, which is a breaking change regarding its previous versions. See the changelog for details.
Others
Webpack
Update to 3.10.0. See the change documentation for 3.9 and 3.10 for details:
https://github.com/webpack/webpack/releases/tag/v3.9.0
https://github.com/webpack/webpack/releases/tag/v3.10.0
Prettier
Updated to 1.9.1. Improves typescript formatting a lot, so I'd recommend to run the format
task to adopt these to your project.
15.0.0
A bunch of breaking releases this time ...
Libraries
Angular
Updated to the most recent 5.0.1. Please have a look at the release announcement of version 5 to get an overview of what is new and what has changed.
Note: The build optimizer is currently not active by default, i.e. you still have to use the build:bo
task resp. the --use-build-optimizer
CLI option.
Rxjs
Rxjs was updated to 5.5.2. The most notable new feature are the lettable operator, which will help in using less global operator imports and building your own rxjs compatible operators.
For other changes, take a look at the project's changelog.
TypeScript
TypeScript dependency got updated to 2.6.1. See the release announcement to get an overview of the fixes and breaking changes.
Note: Angular requires TypeScript 2.4, and has no been tested thoroughly with more recent versions. Most things will work, but there might be some cases where it doesn't, so you might need to drop this dependency version.
Others
Node.js
As already announced in an issue, from this release on, only node.js >= 8.9 will be officially supported. The .nvmrc
is already adopted properly. Currently, there are no features that won't work in node.js 6, and the CI is still executed for this version. However, both will change sooner or later.
Prettier
Prettier got updated to 1.8.2. Please have a look at the release information to get an overview of what has changed. Source code already got formatted with this version.
14.1.0
Just a minor update that comes with several dependencies bumped to most recent or at least most recent stable version. The full diff can be viewed here.
Most notable updates:
lodash-es
The typings for this package have been sticked to 4.14.6
. 4.14.7
seems to import several things from lodash
that are absent, and thus causes build time errors.
workboxjs
The now required version 2.1.0 includes an important bugfix. See the release notes for details.