首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确配置webpack中的.png图像?

如何正确配置webpack中的.png图像?
EN

Stack Overflow用户
提问于 2022-04-17 15:50:08
回答 1查看 735关注 0票数 6

Iv'e创建了一个故事书(构建没有创建-反应-应用程序),部署到npm。当尝试在不同的react应用程序中使用其组件时,应该与组件一起呈现的.png映像根本没有加载(对于.svg映像,我已经设置了可以正常工作的配置)。

在故事书中,我试图导入png如下所示:

代码语言:javascript
复制
import borderPurpleDashed from '../../assets/borders/border-purple-dashed.png';

border-image: url(${borderPurpleDashed}) 30 / 1.5rem round;

然后,在-app中,当导入组件时,它尝试从自己的localhost加载映像。

代码语言:javascript
复制
“http://localhost:3000/a87d8c2e5e8293b0372b.png”

webpack.config.js

代码语言:javascript
复制
const path = require('path');
const webpack = require('webpack');
const svgrLoader = require.resolve('@svgr/webpack');

module.exports = {
    mode: "production",
    entry: './src/index.ts',
    output: {
        filename: 'index.js',
        path: path.resolve(__dirname, 'dist'),
        libraryTarget: 'umd',
        clean: true
    },
    devtool: 'source-map',
    resolve: {
        extensions: [".tsx", ".ts", ".jsx", ".js", ".json"],
        modules: ['node_modules']
    },
    externals: {
        react: "react"
    },
    module: {
        rules: [
            {
                test: /\.(ts|tsx)?$/,
                use:['ts-loader'],
                exclude: /node_modules/
            },
            {
                test: /\.(css|s[ac]ss)$/i,
                use: ['style-loader', 'css-loader', 'postcss-loader'],
            },
            {
                test: /\.svg$/i,
                type: 'asset',
                resourceQuery: /url/, // *.svg?url
            },
            {
                test: /\.svg$/i,
                issuer: /\.[jt]sx?$/,
                resourceQuery: {not: [/url/]}, // exclude react component if *.svg?url
                use: [
                    {
                        loader: svgrLoader, options: {
                            svgoConfig: {
                                plugins: [
                                    {
                                        name: 'removeViewBox',
                                        active: false
                                    }
                                ]
                            }
                        }
                    },
                ]
            },
            {
                test: /\.(woff(2)?|eot|ttf|otf|)$/,
                type: 'asset/inline',
            },
            {
                test: /\.(?:ico|gif|png|jpg|jpeg|)$/i,
                type: 'asset/resource',
            },
        ],
    },
    plugins: [
        new webpack.ProvidePlugin({
            FroalaEditor: 'file_name'
        })
    ]
};

tsconfig.json

代码语言:javascript
复制
{
      "compilerOptions": {
        "allowSyntheticDefaultImports": true,
        "target": "es5",
        "module": "es2015",
        "jsx": "react",
        "strict": true,
        "esModuleInterop": true,
        "moduleResolution": "node",
        "noUnusedLocals": true,
        "types": ["node", "mocha", "jest","cypress", "cypress-file-upload","./cypress/support"],
        "lib": ["es5","es2015","es2016", "dom","esnext"],
        "outDir": "./dist/",
        "sourceMap": true,
        "declarationMap": true,
        "declaration": true,
        "resolveJsonModule": true,
      },
      "include": [
        "src",
        "node_modules/cypress/types/cypress-global-vars.d.ts"
      ],
      "exclude": ["node_modules", "dist", "**/*.stories.tsx", "**/*.test.tsx"]
    }
EN

回答 1

Stack Overflow用户

发布于 2022-04-18 03:15:17

你试过文件加载器吗?

在webpack.config.js中,将其添加到规则数组中:

代码语言:javascript
复制
{
    test: /\.(png|jpe?g|gif)$/i,
    use: [
      {
        loader: 'file-loader',
      },
    ]
}

您可以参考资产的故事书文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71903304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档