0

I have a component library that will be shipping with a few small assets (images). Those assets are imported into various components in the library.

The build script uses babel (without webpack) to transpile the js(x) to a build directory, and is currently dumping the images into build/assets/images.

This works when testing the build, but when using the component in another project (using webpack) the component tries to refer the node_modules folder:

Example component:

import myImage from './assets/images/myImage.png';

const MyComponent = () => (
    <img src={myImage} />
);

export MyComponent;

Usage:

import MyComponent from 'myLibrary/MyComponent';

export default () => (
    <MyComponent />
);

The error message:

myImage.png:1 GET http://localhost:9001/node_modules/myLibrary/assets/images/myImage.png 404 (Not Found)

As I understand the 'best' way to include assets is to use the url-loader so they're converted to data uri's. However, trying to use the url-loader without Webpack isn't working:

babel.config.js

    ...
    plugins: [
        [
            "url-loader",
            {
                "extensions": ["png", "jpg", "jpeg", "gif", "svg", "pdf"],
                "limit": 0
            }
        ]
    ]
    ...

Error: Cannot find module 'babel-plugin-url-loader'

Patrick Dench
  • 813
  • 2
  • 9
  • 27

1 Answers1

1

I found this and it works for PNG and SVG files - worked perfectly for what I needed!

https://www.npmjs.com/package/babel-plugin-inline-import-data-uri

Patrick Dench
  • 813
  • 2
  • 9
  • 27