rollup-plugin-import-assert
Version:
A Rollup plugin to add import assertion behavior and syntax support
69 lines (48 loc) ⢠2.2 kB
Markdown
//github.com/tc39/proposal-import-assertions) for top-level CSS and JSON modules.
This package is available on the npm registry under the name `rollup-plugin-import-assert` and can be installed with npm, yarn or however else you consume dependencies.
npm:
```zsh
npm i -D rollup-plugin-import-assert
```
yarn:
```zsh
yarn add -D rollup-plugin-import-assert
```
Once the plugin is installed, you will also need to make sure you have the `acorn-import-assertions` package installed. You can then add both items to your Rollup configuration as below:
```javascript
import { importAssertionsPlugin } from 'rollup-plugin-import-assert';
import { importAssertions } from 'acorn-import-assertions';
export default {
input: 'path/to/file.js'
output: {
format: 'esm',
dir: 'lib' // only necessary to enable dynamic imports
},
acornInjectPlugins: [ importAssertions ],
plugins: [ importAssertionsPlugin() ]
}
```
These two plugins will enable the import assertion syntax and behavior in your Rollup build. In your input file, you can import files using type assertions as follows:
```javascript
import styles from './styles.css' assert { type: 'css' };
class MyCustomElement extends HTMLElement {
connectedCallback() {
const root = this.attachShadow({ mode: 'open' });
root.innerHTML = `<h1>Hello world</h1>`;
root.adoptedStyleSheets = [ styles ];
}
}
customElements.define('my-custom-element', MyCustomElement);
```
Assuming valid CSS in `styles.css`, the contents of the the CSS will be transformed to use CSS module scripts for use with `DocumentOrShadowRoot.prototype.adoptedStyleSheets`. Currently this API only exists in Chrome, but a [polyfill exists](https://www.npmjs.com/package/construct-style-sheets-polyfill) to port the behavior back to IE11.
This plugin will ignore dynamic imports with dynamic values, e.g.:
```js
import(`./foo/${bar}.json`, { assert: { type: 'json' } }); // will be ignored
const foo = './foo.json';
import(foo, { assert: { type: 'json' } }); // will be ignored
```
š£ A Rollup plugin which enables [import assertions](https: