首页 文章

在Webpack配置中更改图像资产路径

提问于
浏览
0

我遇到了Webpack / Encore的问题,我的图片网址没有正确显示 .

homepage.scss

body {
    background: #FFEFE2 url("../../img/bg.jpg") no-repeat;
}

生成的标记是:

body {
    background: #FFEFE2 url(/build/images/bg.9f6bc44a.jpg) no-repeat;
}

我的应用程序位于 /app 下,因此正确的URL将是 /app/build/images/bg.9f6bc44a.jpg .

我的Webpack安装配置:

var Encore = require('@symfony/webpack-encore');

Encore
// directory where compiled assets will be stored
    .setOutputPath('web/build/')
    // public path used by the web server to access the output path
    .setPublicPath('/build')

    /*
     * ENTRY CONFIG
     *
     * Add 1 entry for each "page" of your app
     * (including one that's included on every page - e.g. "app")
     *
     * Each entry will result in one JavaScript file (e.g. app.js)
     * and one CSS file (e.g. app.css) if you JavaScript imports CSS.
     */
    .addEntry('app', './web/assets/js/app.js')

    // will require an extra script tag for runtime.js
    // but, you probably want this, unless you're building a single-page app
    .enableSingleRuntimeChunk()

    .cleanupOutputBeforeBuild()

    .enableSourceMaps(!Encore.isProduction())

    // enables hashed filenames (e.g. app.abc123.css)
    .enableVersioning(Encore.isProduction())

    // uncomment if you use Sass/SCSS files
    .enableSassLoader()

    // uncomment if you're having problems with a jQuery plugin
    .autoProvidejQuery()
;

module.exports = Encore.getWebpackConfig();

2 回答

  • 0

    您可以使用复制Webpack Plugin . 将其添加到您的依赖项后,更改您的webpack.config.js,如下所示:

    const CopyWebpackPlugin = require('copy-webpack-plugin');
    
    .addEntry('app', './assets/js/app.js')
    .....
    .addPlugin(new CopyWebpackPlugin([
            // copies to {output}/static
            { from: './assets/static', to: 'static' }
        ]))
    ;
    

    重新启动Encore后,您可以像这样使用图像:

    <img src="{{ asset('build/static/foo.jpg') }}" />
    
  • 1
    Encore
       // directory where compiled assets will be stored
       .setOutputPath('web/build/')
       // public path used by the web server to access the output path
       .setPublicPath('/app/build')
       // only needed for CDN's or sub-directory deploy
       .setManifestKeyPrefix('build/')
    

    只需更改currentPath和 setManifestKeyPrefix 即可 .

相关问题