【问题标题】:Wrong output image path after wepack compilewepack编译后输出图片路径错误
【发布时间】:2018-08-31 17:06:31
【问题描述】:

我在我的项目中使用了 webpack。编译存储在 dist/img 文件夹中但在 css 文件中的 webpack 背景图像后,它显示 dist/img/filename..so 图像加载不正确...如果图像路径 ../ img/file 它将起作用..我该怎么做..

这是我的 webpack.config.js 文件

module.exports = (env = {}) => {
    return {
        entry: ['./src/js/app.js', './src/scss/main.scss'],
        output: {
            filename: 'dist/js/app.js',
        },
        module: {
            rules: [
                {
                    test: /\.scss$/,
                    use: [
                        {
                            loader: 'file-loader',
                            options: {
                                name: '[name].css',
                                outputPath: 'dist/css/'
                            }
                        },
                        {
                            loader: 'extract-loader'
                        },
                        {
                            loader: 'css-loader'
                        },
                        {
                            loader: 'postcss-loader'
                        },
                        {
                            loader: 'sass-loader'
                        }
                    ]
                },
                    {
                    test: /\.(jpe?g|png|gif|svg)$/i,
                    use: [
                        {
                            loader: "file-loader?name=[name].[ext]&outputPath=dist/img/"
                        }
                    ]
                }
            ]

        }
    }
};

【问题讨论】:

    标签: webpack imageloader


    【解决方案1】:

    你在输出和加载器配置中犯了一个错误,这样做:

    var path = require('path');

    module.exports = (env = {}) => {
        return {
            entry: ['./src/js/app.js', './src/scss/main.scss'],
            output: {
                filename: '[name].bundle.js',
                path: path.resolve(__dirname, 'dist'),
                publicPath: '/'
            },
            module: {
                rules: [
                    {
                        test: /\.scss$/,
                        use: [
                            {
                                loader: 'file-loader',
                                options: {
                                    name: '[name].css',
                                    outputPath: 'css/'
                                }
                            },
                            {
                                loader: 'extract-loader'
                            },
                            {
                                loader: 'css-loader'
                            },
                            {
                                loader: 'postcss-loader'
                            },
                            {
                                loader: 'sass-loader'
                            }
                        ]
                    },
                    {
                        test: /\.(jpe?g|png|gif|svg)$/i,
                        loader: "file-loader?name=img/[name].[ext]"
                    }
                ]
    
            }
        }
    };
    

    无论如何,您也可以使用CopyWebpackPlugin 将您的资产复制到dist。 我希望这会有所帮助

    【讨论】:

    • 不,它不工作...现在创建外部 dist 文件夹的图像
    • 我已经编辑了我的答案。如果这不起作用,请尝试“file-loader?name=dist/img/[name].[ext]。实际上这取决于您如何管理文件夹结构和 webpack 构建配置。如果您可以共享您的 webpack 配置。这个会很棒
    • 您遇到了什么错误?我对你的output 文件名有一点怀疑
    • 没有错误...但是在 dist 文件夹之外创建图像...现在我得到这个输出页脚 { background-image: url(img/img_bg1.jpg); } 但我需要页脚 { background-image: url(../img/img_bg1.jpg);输出和图像应该存储 dist/img/img_bg1.jpg 文件...但现在它在 dist 文件夹外
    • 你能不能把它分享到 github 上让我深入研究一下。
    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多