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

app-manifest-loader

v2.4.1

Published

Web App Manifest Loader for Webpack - See also: https://developer.mozilla.org/en-US/docs/Web/Manifest

Downloads

1,515

Readme

Web App Manifest Loader for WebpackSponsored by Version Downloads Build Status Unix Build Status Windows Dependencies

Loader to deal with modern PWA/SPA manifest files:

Easy to use. Two formats, one loader. Ready for Webpack v4. Enjoy.

$ npm install --save-dev app-manifest-loader

Web App Manifest

Re-References all images declared in the icons and screenshots fields.

Here you'll find additional documentation on the corresponding standard:

Browserconfig

Re-References all images find in any of the tile configurations.

Usage

Documentation: Using loaders

In your Webpack config:

module: {
  rules: [
    {
      test: /(manifest\.webmanifest|browserconfig\.xml)$/,
      use: [
        {
          loader: "file-loader"
        },
        {
          loader: "app-manifest-loader"
        }
      ]
    }
  ]
}

Note that this example also uses file-loader.

Then, require the manifest in your application code:

import manifest from "./manifest.webmanifest"
import browserconfig from "./browserconfig.xml"

In typical React application you might want to use React Helmet. Then the typical approach is to use the imported URL at the corresponding link element:

<link rel="manifest" href="{manifest}" />
<meta name="msapplication-config" content="{browserconfig}" />

For ReactJS you typically might want to use it together with React Helmet Async:

import Helmet from "react-helmet-async"

import manifest from "./manifest.webmanifest"
import browserconfig from "./browserconfig.xml"

function renderHead() {
  return (
    <Helmet>
      <link rel="manifest" href={manifest} />
      <meta name="msapplication-config" content={browserconfig} />
    </Helmet>
  )
}

The manifest allows you to provide image paths in the standard Webpack format inside your manifest:

{
  "name": "Hello World",
  ...
  "screenshots": [
    {
      "src": "./images/screenshot-portrait.png",
      "sizes": "2560x1440",
      "type": "image/png"
    },
    ...
  ],
  "icons": [
    {
      "src": "./images/icon.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    ...
  ]
}

Alternatives

We chose to implement this as a loader to be able to import hand written and optimized manifests with their matching images.

An alternative concept would be to generate most of the required image by automatic image scaling by just defining a few master images. In this case you would typically use this well maintained plugin:

Compared to the loader based solution this moves application specific data into the Webpack configuration. One could argue that with shared Webpack configurations this introduces some app specific sections in a tooling related file.

Copyright

Copyright 2017-2019Sebastian Software GmbH