npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

svelte-preprocess-import-assets

v1.1.0

Published

Import assets in markup

Downloads

13,813

Readme

svelte-preprocess-import-assets

Import assets directly in the markup. Supports Svelte 3, 4, and 5.

NOTE: Svelte 5 support is experimental and may break between versions.

Convert this:

<h1>Look at this image</h1>
<img src="./assets/cool-image.png" alt="cool image" />

Into this:

<script>
  import ___ASSET___0 from './assets/cool-image.png'
</script>

<h1>Look at this image</h1>
<img src={___ASSET___0} alt="cool image" />

Usage

Install with your package manager:

npm install --save-dev svelte-preprocess-import-assets

Include the preprocessor in your bundler's Svelte plugin preprocess option:

import { importAssets } from 'svelte-preprocess-import-assets'

svelte({ preprocess: [importAssets()] })

// or in svelte.config.js
export default {
  preprocess: [importAssets()],
  // ... other svelte options
}

API

The importAssets() function receives an optional options object for its first parameter. The object may contain these properties:

sources

  • Type: AssetSource[] | ((defaultSources: AssetSource[]) => AssetSource[])

    interface AssetSource {
      tag: string
      srcAttributes?: string[]
      srcsetAttributes?: string[]
      filter?: (metadata: FilterMetadata) => boolean
    }
    
    interface FilterMetadata {
      tag: string
      attribute: string
      value: string
      attributes: Record<string, string>
    }
  • Default: See DEFAULT_SOURCES in src/constants.js

    These are the sources to look for when scanning for imports. You can provide an entirely different list of sources, or declare a function to access the default sources and augment it. The supported tags and attributes are based on html-loader (except icon-uri). Component name as tag is also supported.

    {
      sources: (defaultSources) => {
        return [
          ...defaultSources,
          // Also scan `data-src` and `data-srcset` of an img tag
          {
            tag: 'img',
            srcAttributes: ['data-src'],
            srcsetAttributes: ['data-srcset'],
          },
        ]
      },
    }

importPrefix

  • Type: string

  • Default: ___ASSET___

    The string to be prefixed for asset import names, e.g. ___ASSET___0 and ___ASSET___1.

http

  • Type: boolean

  • Default: false

    Whether a URL with http/https protocol should be converted to an import.

urlFilter

  • Type: (url: string) => boolean

    Whether a URL should be converted into an import.

    {
      // Include URLs with specific extensions only
      urlFilter: (url) => /\.(png|jpg|gif|webp)$/.test(url),
    }

Recipes

Ignore an element

<!-- svelte-preprocess-import-assets-ignore -->
<img src="./assets/cool-image.png" alt="cool image" />

Attributions

Sponsors

License

MIT