Releases: systemjs/systemjs
SystemJS 0.18.5
Features
globals
config is now supported for CommonJS (#591)- More flexibility for plugins that set
load.metadata.sourceMap
to have their source maps easily work via more lenient sanitizing (#598). - Module objects now have
module.toString == "Module"
to match spec (#646) - Duplicate entries now supported in
System.register
for TypeScript support (b6c7f5e)
Bug Fixes
- Package map internal normalization fix (e3eb0b3)
- Script loading race condition fix (#614)
- Fixes custom file extension issue for bundles using
System.register
(#602) - Packages extensions handling fix (bb5430a)
- Fixes IE8 support (#603)
mozAnimationStartTime
added to global ignores to avoid global detection during changes (#589)System.register
and meta comment regular expression fix (#629, cff3701)
SystemJS 0.18.3
SystemJS 0.18.2
Bug Fixes
- RequireJS toUrl to skip js extension adding (da93c0c)
- Plugin normalization bug fix for non-js extensions (974e6e0)
- Fix URL support detection in Safari (acfa430)
- Enable package normalization lookups without main adding via trailing
/
(e30ab5f) - Use eval inside Chrome extensions over script injection (#531)
SystemJS 0.18.1
Minor configuration bug fix to ensure that paths take preference in config ordering (26853a2)
SystemJS 0.18.0
This is a minor but breaking correction to the 0.17 release. For upgrading from SystemJS 0.16.0, the 0.17 release notes provide the breaking changes upgrade guide.
Minor Breaking Changes
- Paths now apply before
defaultJSExtensions
instead of after. defaultExtension
in packages (https://github.com/systemjs/systemjs/blob/0.18.0/docs/config-api.md#packages) now takes preference todefaultJSExtensions
(https://github.com/systemjs/systemjs/blob/0.18.0/docs/config-api.md#defaultjsextensions) allowing packages to selectively upgrade to the new conventions.
Features
- require.toUrl AMD support (#504)
- load.metadata.sourceMap support for plugin source map builds (#497)
- Configuration order no longer matters, and baseURL can only be set before other config (#514, 39ff8d0)
- Plugin modules and arguments run through full normalization pipeline (#483)
Bug Fixes
__useDefault
is no longer exported via export * (#487)- Backwards compatibility fix for global deps meta syntax (#494)
- Fixes system-polyfills.js detection of URL in IE & IE Edge (#495, ModuleLoader/es-module-loader#398)
- Boolean conditional module name fix (#503)
SystemJS 0.17.1
Fix transpiler loader scoping issue (f8e84c8)
SystemJS 0.17.0
This is a big release of SystemJS that has been a long time coming as part of a two-phase transition into the new loader specification. The goal was to include as much of the new behaviors as possible, along with the new SystemJS API upgrades while maintaining maximum backwards-compatibility.
Most previous code should continue to work fine, provided you set System.defaultJSExtensions: true
and use System.config({...})
for configuration over setting instance methods directly. Then new best-practices and configurations are available now to start using the new API concepts.
When we finally transition to the new loader spec, most of the APIs should then work with only simple renaming left to do where API names change.
The documentation and getting started guide has also been fully updated to the new APIs.
See also the Module Loader 0.17 release notes at https://github.com/ModuleLoader/es6-module-loader/releases/tag/v0.17.0.
Features
- New builds which no longer require es6-module-loader.js, but including just the necessary parts from it. This reduces the total size of SystemJS from 16KB to 12KB and 9.5KB for the production-only CSP build.
- A separate polyfills build for URL and Promise is now included in
system-polyfills.js
file, which is loaded only when needed (mainly IE) just like we used to do fores6-module-loader.js
. - TypeScript transpiler support
- URLs are now fully supported as module names
- Named exports are now provided for CommonJS modules (#334)
- New global shim layer allowing globals dependent on modules
- Plugins can now be set via configuration, with a Webpack-style loader meta
- New packages configuration to replace contextual map
- Meta configuration can now be set with wildcards, and will be additive
- SystemJS will now automatically load with a script tag for maximum CSP-compatibility when loading AMD, System.register or globals without custom shim options set.
Breaking Changes
- Setting ".js" extensions via paths rules like
paths['*'] = '*.js'
is no longer supported. - URLs are now first-class module names. All names are normalized into URLs into the registry as part of the normalization process, and the locate hook has been deprecated. Read whatwg/loader#52 for more information about this.
- .js extensions should not be added automatically. This is now included by default, with a backwards-compatibility mode which can be enabled via
System.defaultJSExtensions = true;
. - When configuring SystemJS, it is now necessary to always use
System.config({})
as configuration options need to be normalized properly into URLs. The benefit of this is meta syntax is much easier to set as it now permits any valid specifier egSystem.config({ meta: { './local/module.js': {...} } })
init
function has been deprecated for global shims.- Global shim layer dependency global reconstruction is deprecated for the new globals config option.
System.clone
is now deprecated in favour of basic class inheritance (egclass CustomLoader extends System.constructor
)- It is no longer possible to provide map configuration which maps into plugins (
map: { jquery: 'some!plugin' }
) __moduleAddress
is no longer available in ES6 modules, as__moduleName
is now the URL reference
Authors who have created custom extension work on top of SystemJS will have more breaking changes, please feel free to post an issue if you have any questions at all.
Deprecations for 0.19
The following deprecations are changes that are going to be deprecated in the 0.19 major release of SystemJS
but will continue to work for now.
It is advisable to upgrade code to use the newer conventions described.
- Contextual map configuration has been deprecated for package map configuration. Map config therefore should now only map strings to strings. Read about package configuration here.
- The
"es6"
module format is now referenced as"esm"
meaning ES6 Module. The point being that it refers to the module format itself and not the language or language version. - The dependency meta syntax
"deps jquery"
has been deprecated for an array syntax "deps[] jquery" to indicate that the metadata value being populated is an array. - There have been two variations of System.register - one with 3 arguments for ES6 modules and another with 4 arguments for CommonJS and globals to be converted into by SystemJS Builder. This 4-argument form is renamed to
System.registerDynamic
. SystemJS builder will handle this upgrade path naturally, so there isn't too much to worry about here.