mirror of
https://github.com/danog/sass-site.git
synced 2024-12-13 09:57:35 +01:00
41 lines
1.6 KiB
Plaintext
41 lines
1.6 KiB
Plaintext
|
---
|
||
|
title: "Breaking Change: Default Exports"
|
||
|
introduction: |
|
||
|
By default, Node.js allows [CommonJS modules] to be loaded from ECMAScript
|
||
|
modules using the syntax `import sass from 'sass'`. This is now deprecated;
|
||
|
ESM users should use `import * as sass from 'sass'` instead.
|
||
|
|
||
|
[CommonJS modules]: https://nodejs.org/docs/latest/api/modules.html#modules-commonjs-modules
|
||
|
[ECMAScript modules]: https://nodejs.org/api/esm.html#modules-ecmascript-modules
|
||
|
---
|
||
|
|
||
|
{% markdown %}
|
||
|
Historically, Dart Sass was only available as a CommonJS module. This meant that
|
||
|
anyone using it from a project that used Node.js's native ECMAScript module
|
||
|
support was able to load it as though it provided a [default export]:
|
||
|
|
||
|
[default export]: https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export#using_the_default_export
|
||
|
|
||
|
```js
|
||
|
import sass from 'sass'; // Don't do this anymore
|
||
|
```
|
||
|
|
||
|
This was never intended by the Sass team, and it didn't match the type
|
||
|
declarations provided with the package, but it _did_ work. We have decided to
|
||
|
remove this support in Dart Sass 2.0.0 and require that ECMAScript module users
|
||
|
only use the package's named exports:
|
||
|
|
||
|
```js
|
||
|
import * as sass from 'sass'; // Do this
|
||
|
```
|
||
|
|
||
|
## Transition Period
|
||
|
|
||
|
{% compatibility 'dart:"1.54.0"', 'libsass:false', 'ruby:false' %}{% endcompatibility %}
|
||
|
|
||
|
Until Dart Sass 2.0.0, we will continue to support users loading Sass's default
|
||
|
export. The first time any properties on the default export are accessed, it
|
||
|
will emit a deprecation warning to `console.error()`. To avoid this error, use
|
||
|
`import * as sass form 'sass'` instead.
|
||
|
{% endmarkdown %}
|