- Requires Hoist-React v70.1+ with workaround for SASS/CSS processing issue caused by bad syntax in the
react-dates
library, which started throwing an error after the updates to sass in this dev-utils release.
- babel-loader
9.1 β 9.2
- rimraf
5.0 β 6.0
- sass-embedded
1.77 β 1.82
(swaps out sass for sass-embedded) - sass-loader
14.2 β 16.0
- webpack
5.93 β 5.97
- webpack-dev-server
5.0 β 5.1
- webpackbar
6.0 β 7.0
- type-fest
added @ 4.x
- ensures that apps have a recent version of this library installed as a dev dependency. (It's required to compile hoist-react typescript as part of the current combined Hoist + app build.) - webpack
5.92 β 5.93
- Requires Hoist-React v64.1+ with updated static assets within a new
/public
directory. These are now copied at build time to the/public/
output directory, alongside (and deferring to) any app-provided assets.
- webpack
5.91 β 5.92
- Updated the viewport
meta
tag within the staticindex.html
template to remove constraints on user scaling. (See xh/hoist-react#3651.) - Default
baseUrl
in development now has an adaptive protocol (http/https) based on browser location.
This makes it simpler for developers to configure their local development environment to use https.
- css-loader
6.10 β 7.1
- mini-css-extract-plugin
2.8 β 2.9
- sass
1.72 β 1.77
- sass-loader
14.1 β 14.2
- style-loader
3.3 β 4.0
- webpack
5.90 β 5.91
- Added another
resolveAliases
entry to ensure that the same instance of@ag-grid-community
is used when developing inline. This ensures there is only one version of ag-grid's hook contexts.
- Individual manifest.json files are now generated for each clientApp, with their starting URL set to the base URL for that app. Intended specifically for mobile apps added to device home screens, so they can load their intended client app directly without the need for additional redirects.
- A new
preloadBackgroundColor
config will be applied to the preloader spinner, allowing apps to set a background color that matches their app's theme. This can help minimize a flash of white when the app first loads.
- The static
index.html
file used as an entry point template has been moved out of hoist-react and into this project, to aid in future dev-utils releases where changes to this file are required.
- Requires Hoist React v62+ with updated (and now only)
/static/index.html
HTML entrypoint template.
- Chunking of bundled JS and CSS outputs updated to use webpack's default naming and splitting strategy, avoiding issues where builds with many client apps could generate bundle names that exceeded filename length limits.
- Builds can now generate more but smaller chunks, allowing browsers to better parallelize the initial download of an app's codebase.
- @babel/*
7.23 β 7.24
- sass
1.70 β 1.72
- webpack-dev-server
4.15 β 5.0
- Adds
xhClientApps
as a global constant for Hoist React v61+.
- Removed
clean-webpack-plugin
- it is no longer maintained and was causing runtime issues in development. Its functionality is replaced by theclean
option in theoutput
section of the webpack config.
- Updated to new webpack API for enabling HTTPS on local dev server. Note that the handling of the (rarely used)
devHttps
parameter has changed.
- Fixed chunk collection so that similarly named apps within a project do not load each other's app chunk.
- @babel/*
7.22 β 7.23
- copy-webpack-plugin
11.0 β 12.0
- css-loader
6.8 β 6.10
- html-webpack-plugin
5.5 β 5.6
- mini-css-extract-plugin
2.7 β 2.8
- postcss-loader
7.3 β 8.1
- rimraf
4.4 β 5.0
- sass
1.63 β 1.70
- sass-loader
13.3 β 14.1
- webpack
5.88 β 5.90
- webpack-bundle-analyzer
4.9 β 4.10
- webpackbar
5.0 β 6.0
- Updated
@xh/eslint-config
to v6.0, for use with Typescript v5.1+ and Hoist React v59+.
- @xh/eslint-config
5.0 β 6.0
- webpack
5.84 β 5.87
- Added new
devServerOverlay
config to control full-screen error overlay added by webpack-dev-server. Default to show compilation errors only, allowing devs to opt-in to compilation warnings and/or runtime errors.
- sass
1.62 β 1.63
- webpack
5.84 β 5.87
- webpack-bundle-analyzer
4.8 0 β 4.9
- Updated Babel configuration to enable key transforms via preset-env
includes
directive. Resolves issue with outdated plugin names in the prior config causing errors like "cannot find package @babel/plugin-proposal-class-properties" for apps that updated to Babel 7.22 (several key transforms were released under new names with the 7.22 release - see babel/babel#15614). - Updated special transformations for the FontAwesome icon dependencies to include their "thin" package, which was added to hoist-react last year and was not being properly tree-shaken.
- Updated minimal shim for required-only BlueprintJS icons to restore another bundle size reduction that had been lost with the update to Blueprint 4.x back in Hoist React v50. Update required a new path for import transformations and moved the shim file from hoist-react to this project.
- @babel/*
7.21 β 7.22
- css-loader
6.7 β 6.8
- postcss-loader
7.1 β 7.3
- sass
1.59 β 1.62
- sass-loader
13.2 β 13.3
- webpack
5.76 β 5.84
- webpack-cli
5.0 β 5.1
- webpack-dev-server
4.13 β 4.15
- @babel/*
7.20 β 7.21
- changelog-parser
2.8 β 3.0
- postcss-loader
7.0 β 7.1
- rimraf
3.0 β 4.4
- sass
1.56 β 1.59
- webpack
5.75 β 5.76
- webpack-dev-server
4.11 β 4.13
- Flipped options for Babel plugins related to decorator and class field proposals, reverting to
loose:false
(the default) as per latest MobX docs.β οΈ Required for updated implementation of the@bindable
decorator in Hoist React v54.
- Typescript support for Hoist React v54+ via
@babel/plugin-transform-typescript
. - Remains compatible for use with JS-only application projects and prior JS-only versions of Hoist React.
- @babel/*
7.18 β 7.20
- @xh/eslint-config
4.0 β 5.0
- babel-loader
8.2 β 9.1
- mini-css-extract-plugin
2.6 β 2.7
- sass
1.53 β 1.56
- sass-loader
13.0 β 13.2
- webpack
5.73 β 5.75
- webpack-cli
4.10 β 5.0
- webpack-dev-server
4.9 β 4.11
- This release features a major update to Webpack v5, along with updates to all supporting libraries.
- Requires Hoist React v48+.
- Imports from
package.json
no longer support default export - you must import the entire package JSON as an object. This is most likely to be relevant inBootstrap.js
where apps read the Ag-Grid version from its package. See this file within the XH Toolbox app for the updated syntax. - The syntax form passing variables to
yarn
scripts in your package.json has changed - note the removal of the dot:- e.g.
webpack --env.prodBuild
>webpack --env prodBuild
- This will likely require updates to automated builds which pass in version / build tags via env args.
- e.g.
- If you have a mobile app, you must provide a wider range of favicons for display on devices. See https://github.com/xh/hoist-dev-utils/#favicons for more details.
- @babel/*
7.16 β 7.18
- @cerner/duplicate-package-checker-webpack-plugin
added @ 2.3
(fork w/WP5 support) - @xh/eslint-config
3.1 β 4.0
(includes eslint v8) - clean-webpack-plugin
3.0 β 4.0
- copy-webpack-plugin
6.3 β 11.0
- css-loader
5.2 β 6.7
- favicons-webpack-plugin
removed
- html-webpack-plugin
4.5 β 5.5
- html-webpack-tags-plugin
2.0 β 3.0
- mini-css-extract-plugin
1.6β 2.6
- postcss
8.3 β 8.4
- postcss-loader
4.1 β 7.0
- sass
1.37 β 1.49
- sass-loader
10.1 β 13.0
- style-loader
2.0 β 3.3
- terser-webpack-plugin
4.2 β 5.3
- webpack
4.44 β 5.73
- webpack-cli
3.3 β 4.10
- webpack-dev-server
3.11 β 4.9
- webpackbar
4.0 β 5.0
- Supports new
reactProdMode
flag passed toconfigureWebpack()
. Use to force React into production mode during local development. (Production builds always use prod mode, as before.)
- @xh/eslint-config
3.0 β 3.1
- @babel/*
7.15 β 7.16
- autoprefixer
10.3 β 10.4
- webpack-bundle-analyzer
4.4 β 4.5
- Pass flag to HTML template to indicate if preload spinner is present and should be rendered.
- Respected by
hoist-react >= v43.0.2
.
- Respected by
- Support for copying the animated png used by Hoist React v43+ as a preload spinner into /public, so it can be loaded and shown while the JS app downloads and prepares to render.
- New
devHttps
config adds support for running the local webpack-dev-server over SSL.
- Add newly required babel plugin config to avoid console warnings during compilation.
- @babel/*
7.14 β 7.15
- autoprefixer
10.2 β 10.3
- sass
1.35 β 1.37
- @babel/*
7.13 β 7.14
- mini-css-extract-plugin
1.4 β 1.6
- post-css
8.2 β 8.3
- sass
1.32 β 1.35
- Updated default
targetBrowsers
config for Babel-based transpiling to replaceEdge >= 18
withlast 2 Edge versions
(v89-90 as of this release). This removes a certain amount of transpiled code generated to support Edge 18.- Edge 18 was the last version released before that browser's switch to the Chromium engine in January 2020.
- β Any apps that require Edge 18 support and observe issues with this change can specify an
appropriate set of targets within their
webpack.config.js
file.
- New
faviconManifestConfig
option added toconfigureWebpack()
build script. Allows customization of certain options related to adding a mobile app to a device home screen, as well as "installing" an app via Chrome's "create shortcut" option.- Default options also improved to properly set application name, version, and non-empty description (defaults to appName, but squelches console warning).
- See https://github.com/itgalaxy/favicons#usage for supported options.
- New
parseChangelog
option added toconfigureWebpack()
build script. Set totrue
(default) to parse an applicationCHANGELOG.md
file at the root of your project directory for import by Hoist React'sXH.changelogService
, which will make its contents available to app users. (Changelog UI features require @xh/hoist v39.1+.)
- The
configureWebpack()
build script function is now async, to support internal async calls. This is supported out-of-the-box by Webpack, and should not require any application-level changes.
- changelog-parser
added @ 2.8
- css-loader
5.0 β 5.2
- mini-css-extract-plugin
1.3 β 1.4
- Includes updated
@xh/[email protected]
with switch to@babel/eslint-parser
- fixes auto-updates in toolchain dependencies that started to break linting. - Additional type mapping in
module.rules
to support.mjs
distros out of thestylis
library, included as a transitive dep byreact-select@v4
.
- @babel/*
7.12 β 7.13
- @xh/eslint-config
2.3 β 3.0
- autoprefixer
10.0 β 10.2
- case-sensitive-paths-webpack-plugin
2.3 β 2.4
- postcss
8.1 β 8.2
- sass
1.29 β 1.32
- webpack-bundle-analyzer
4.2 β 4.4
- New
sourceMaps
option added toconfigureWebpack()
build script. Apps can now control sourceMap generation, including specifying'devOnly'
to disable maps in production (a recommended security practice for untrusted environments). Default behavior is unchanged.
- @babel/*
7.11 β 7.12
- @types/react
16.9 β 17.0
- autoprefixer
9.8 β 10.0
- babel-loader
8.1 β 8.2
- copy-webpack-plugin
6.1 β 6.3
- css-loader
4.3 β 5.0
- file-loader
6.1 β 6.2
- mini-css-extract-plugin
0.11 β 1.3
- postcss
added @ 8.1
- postcss-flexbugs-fixes
4.2 β 5.0
- postcss-loader
3.0 β 4.1
- sass
1.26 β 1.29
- sass-loader
9.0 β 10.1
- style-loader
1.2 β 2.0
- webpack-bundle-analyzer
3.9 β 4.2
- When paired with
hoist-react >= v36.1.0
, this release of dev-utils will avoid the use of any inline script tags within theindex.html
file generated for each app. Instead, it will copy and inject a link to an unbundled copy of thestatic/preflight.js
script supplied by hoist-react.- This allows for stricter Content Security Policy (CSP) headers - see Toolbox's nginx config @
docker/nginx/app.conf
for an example.
- This allows for stricter Content Security Policy (CSP) headers - see Toolbox's nginx config @
- copy-webpack-plugin
6.0 β 6.1
- css-loader
4.2 β 4.3
- file-loader
6.0 β 6.1
- html-webpack-plugin
4.3 β 4.5
- html-webpack-tags-plugin
added @ 2.0
- mini-css-extract-plugin
0.9 β 0.11
- terser-webpack-plugin
4.1 β 4.2
- webpack-bundle-analyzer
3.8 β 3.9
Resolutions added for some transitive dependencies that had grown excessively stale and were triggering console warnings on install/upgrade. Reviewed changelogs for these projects and did not see any indication that they would be incompatible.
- @babel/core
7.10 β 7.11
- css-loader
3.6 β 4.2
- favicons-webpack-plugin
3.0 β 4.2
- mini-css-extract-plugin
0.9 β 0.10
- terser-webpack-plugin
3.0 β 4.1
- webpack
4.43 β 4.44
- Fix check to detect if replacement stub file for Blueprint icons actually exists.
- (Note v5.2.1 release built but scratched due to error in fix above.)
- App builds now load only a handful of
@blueprintjs
icons that are actually used by components. This change significantly reduces build size as BP ships a large set of generic SVG icons and bundles them all by default, but Hoist already includes FontAwesome as our standard icon library.- If the full set of Blueprint icons are required for a special app use-case,
configureWebpack()
now supports a newloadAllBlueprintJsIcons
argument to revert to the previous behavior. - Requires Hoist React v35.2+ to supply the more minimal set of icon SVGs. Older versions of HR are compatible with this version of dev-utils, but the icons optimization will not be activated.
- If the full set of Blueprint icons are required for a special app use-case,
- @xh/eslint-config
2.2 β 2.3
This version switches to the newly-recommended dart-sass library (aka the sass
npm package) for
SASS compilation. This replaces the often-problematic usage of node-sass, which required OS-specific
tooling to support building native code on developer workstations.
- css-loader
3.5 β 3.6
- node-sass
removed
- sass
added @ 1.26
- sass-loader
8.0 β 9.0
As of this release, Hoist is now licensed under the popular and permissive Apache 2.0 open source license. Previously, Hoist was "source available" via our public GitHub repository but still covered by a proprietary license.
We are making this change to align Hoist's licensing with our ongoing commitment to openness, transparency and ease-of-use, and to clarify and emphasize the suitability of Hoist for use within a wide variety of enterprise software projects. For any questions regarding this change, please contact us.
This release includes updates to a number of tooling dependencies, including some major updates. However no changes to application code or configs should be required.
- @babel/core
7.9 β 7.10
- @babel/preset-env
7.9 β 7.10
- @babel/preset-react
7.9 β 7.10
- autoprefixer
9.7 β 9.8
- copy-webpack-plugin
5.1 β 6.0
- css-loader
3.4 β 3.5
- favicons-webpack-plugin
2.1 β 3.0
- html-webpack-plugin
3.2 β 4.3
- node-sass
4.13 β 4.14
- style-loader
1.1 β 1.2
- terser-webpack-plugin
2.3 β 3.0
- url-loader
4.0 β 4.1
- webpack
4.42 β 4.43
- webpack-bundle-analyzer
3.6 β 3.8
- webpack-dev-server
3.10 β 3.11
- New Babel preset-env
bugfixes
option defaulted to true. Intended to to further minimize transpilation to ES5 where not required by targeted browsers. See Babel Docs. - New
babelPresetEnvOptions
config accepted to allow direct override / customization of options passed to the babel-loader preset-env preset (including disabling the new option above if problematic). - New
dupePackageCheckExcludes
config accepted to suppress duplicate package warnings by name. Defaulted to exclude longstanding (but not problematic) warning fortslib
.
- @babel/core
7.8 β 7.9
- @babel/preset-env
7.8 β 7.9
- @babel/preset-react
7.8 β 7.9
- babel-loader
8.0 β 8.1
- file-loader
5.0 β 6.0
- url-loader
3.0 β 4.0
- The
/client-app/public
directory and its contents are now copied into the build output. Can be used to include static assets you wish to link to without using an import to run through the url or file-loader.
- copy-webpack-plugin:
added @ 5.1
- webpack:
4.41 β 4.42
- Fixed favicon generation with upgrade of plugin - generated HTML again includes tags for correctly sized favicons across a variety of platforms.
- favicons-webpack-plugin:
1.0 β 2.1
- @babel/core (and related)
7.7 β 7.8
- css-loader
3.2 β 3.4
- mini-css-extract-plugin
0.8 β 0.9
- style-loader
1.0 β 1.1
- terser-webpack-plugin
2.2 β 2.3
- webpack-dev-server
3.9 β 3.10
- @babel/plugin-proposal-nullish-coalescing-operator
7.4 β 7.7
- @babel/plugin-proposal-optional-chaining
7.6 β 7.7
- file-loader
4.2 β 5.0
- url-loader
2.2 β 3.0
- Disable Terser mangling of identifiers / variables due to intermittent and difficult to debug issues with it breaking code, especially when run on already-packaged libraries. Disabling does increase bundle size, although not by much on a relative basis.
- @babel/core (and related)
7.6 β 7.7
- autoprefixer
9.6 β 9.7
- node-sass
4.12 β 4.13
- terser-webpack-plugin
2.1 β 2.2
- webpack-bundle-analyzer
3.5 β 3.6
- webpack-dev-server
3.8 β 3.9
- chalk (removed)
- Bundled
@types/lodash
and@types/react
as dev dependencies for developer convenience / better hinting options from IDEs, including support for types such asReactNode
in jsdoc comments.
- @babel/preset-react
7.0 β 7.6
- Add new
terserOptions
config as hook for app builds to customize Terser minification directly if required, although defaults should continue to be fine as they are. Addedkeep_classnames: true
to the Terser defaults now that we are emitting classes.
- url-loader
2.1 β 2.2
(4.3.2 was an accidental no-op build π)
- @xh/eslint-config
2.1 β 2.2
- Removes a previous workaround in
configureWebpack
to always transpile JS code down to ES5 (implemented by pushing IE11 onto thetargetBrowsers
config passed tobabel/preset-env
). Babel will now actually use Hoist's default target browsers (recent versions of Chrome, Safari/iOS, and Edge) resulting in a build output with significantly less transformation of the source code. - Apps or client environments that find they need support for less capable browsers (e.g, a secure
mobile browser using an older JS engine) can pass a custom
targetBrowsers
array to adjust the output.
- webpack
4.40 β 4.41
- Support for the nullish coalescing operator
let foo = bar ?? 'default'
via the@babel/plugin-proposal-nullish-coalescing-operator
plugin.
- Tweak to skip logging (spurious) packaged Hoist version when running with Hoist inline.
- @xh/eslint-config
2.0 β 2.1.1
- terser-webpack-plugin
2.0 β 2.1
This release includes a number of major/minor updates for the build toolchain. Most notably, it
updates Babel and its plugins from 7.4 β 7.6
, which removes support for the @babel/polyfill
plugin we had been using in favor of core-js@3
for polyfills (as of 7.5).
- Support for the nullsafe operator
let foo = bar?.baz
via the@babel/plugin-proposal-optional-chaining
plugin. - Support for
Promise.allSettled()
via thecore-js
polyfills. Hoist v28 will remove its dependency on the RSVP library which previously provided this utility.
- Requires Hoist React v28+, which adds a required runtime dependency on
core-js
for polyfills as well as a new static import file referenced byconfigureWebpack()
to provide a once-per-entry-point import ofcore-js
andregenerator-runtime
.
- @babel
7.4 β 7.6
- @xh/eslint-config
1.2 β 2.0
- webpack
4.31 β 4.40
- Multiple other library updates for loaders, plugins, and other utils.
- Ensure react is resolved to a single instance of the library when running in
inlineHoist
mode. (Avoids errors when attempting to call hooks that will throw if called across multiple instances of the library.)
- @xh/eslint-config
1.1.1 β 1.2.0
- react-hooks plugin and linting rules.
- Added new
checkForDupePackages
flag, default true to mirror previous behavior added in 3.7.5. Set to false to disable duplicate package checking / warnings if unwanted.
- @xh/eslint-config
1.1.0 β 1.1.1
- whitelist WebSocket global.
- Added Webpack
DuplicatePackageCheckerPlugin
to warn on build if non-overlapping dependency requirements force the inclusion of a package multiple times. (This was happening with lodash, unexpectedly.)
- Updated lodash to latest patch release (security fixes)
- Restored webpack-cli @ 3.3.2
- Removed webpack-cli (this made v3.7.3 unusable)
- node-sass
4.11 β 4.12
- webpack
4.30 β 4.31
- Other minor/patch updates
- webpack
4.29 β 4.30
- webpack-dev-server
3.2 β 3.3
- Other minor/patch updates
- Babel
7.3 β 7.4
- autoprefixer
9.4 β 9.5
- webpack-cli
3.2 β 3.3
βοΈ [email protected] | https://xh.io
Copyright Β© 2024 Extremely Heavy Industries Inc.