Webpack和Angular HTML图像加载

bti*_*oco 4 html javascript angularjs webpack

我一直在用webpack和棱角分明.这可能有一个简单的答案,但我无法弄明白.我已经阅读了这个主题的堆栈溢出中的几乎所有答案都无济于事.

我有一个像这样的html页面(也有其他模板有图像):

<body>
    <img ng-src="../images/angular-webpack.png">

    <md-button class="md-primary md-raised">
        Button
    </md-button> 
</body>
Run Code Online (Sandbox Code Playgroud)

我也有一个webpack配置:

var webpack = require('webpack');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var path = require('path');

module.exports = {
    context: path.resolve(__dirname + '/src'),
    entry: ['./js/core/app.module.js'],
    output: {
        path: './release',
        publicPath:'/',
        filename: 'app.js'
    },
    module: {
        loaders: [
            {
                test: /\.html/,
                exclude: 'node_modules',
                loader: 'raw-loader'
            },
            {
                test: /\.css/,
                exclude: 'node_modules',
                loader: 'style-loader!css-loader'
            },
            {
                test: /\.(jpe?g|png)$/i,
                exclude: 'node_modules',
                loader: 'url-loader?limit=8192!img'
            }
        ]
    },
    plugins: [
        new webpack.optimize.UglifyJsPlugin({
            compress: {
                warnings: false
            }
        }),
        new CopyWebpackPlugin([
            {from: './index.html', to: './index.html'}
        ], {
            ignore: [
                '*.txt',
                {glob: '**/*', dot: true}
            ]
        })
    ],
    devServer: {
        contentBase: './release'
    },
    watch: true
};
Run Code Online (Sandbox Code Playgroud)

...但我没有看到我的图像加载.我已经尝试过url-loader,带有publicPath的文件加载器,没有它.我很困惑,我不知道如何格式化webpack配置或html图像标记使其工作.

任何人都有使用webpack获取图像的经验吗?此外,我不想将我的图像包含在控制器或任何其他js文件中.我希望在html页面中声明图像.

Joh*_*ald 7

raw-loader应该把一个文本文件放入导出文件的内容作为一个字符串CommonJS的模块-仅此而已.

如果您希望webpack将文件识别为HTML及其中的所有引用,则需要html-loader.html-loader用HTML解析器解析给定文件,并获取对属性中其他文件的引用.默认情况下,这只是<img src="...">.在您的情况下,您需要告诉html-loader也要查找ng-src属性,如下所示:

// webpack.config.js

    ...
    loaders: [{
        test: /\.html$/,
        loaders: [
            "html?" + JSON.stringify({
                attrs: ["img:src", "img:ng-src"]
            })
        ]}
    ]
Run Code Online (Sandbox Code Playgroud)