Webpack - 复制图像文件

Webpack - Copy images files

我目前正在使用 Webpack 来打包我们的 Angular2 应用程序,但我遇到了一个问题。

我已经阅读了几个文档,但我无法实现如何使用文件加载器复制输出目录中的一些文件。

这是我当前的文件层次结构:

config
  | - webpack.common.js   
app        
  |- static
      | - css
           | - ...
      | - fonts
           | - ...
      | - img
           | - someimage.png
           | - anotherimage.png
  |- main.ts

和(完整)webpack.common.js :

var path = require("path")
var webpack = require("webpack")
var ExtractTextPlugin = require("extract-text-webpack-plugin")
var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {    
    entry: { 
      app: './app/main.ts',
    },
    output: {
        filename: 'js/[name].js',
        path:'./built',
        chunkFilename: 'bundles/[id].chunk.js'
    },


    module: {
        loaders: [
        {
            test: /\.ts$/,
            loader: 'ts',
            exclude:'./out/'
        },
        {           
             test: /\.(jpe?g|png|gif|svg)$/i,
             include: [
                 path.resolve(__dirname, '/app/static/img/'),
              ],
             loader: 'file?name=[path][name].[ext]&context=./src',

        }
        ]
    },

     resolve: {
         extensions: ['', '.js', '.ts', '.gif']
    },


     plugins: [
         new HtmlWebpackPlugin({
             template: './index.html'
         })
    ]
}

要执行 webpack,我执行命令:

webpack --config Config/webpack.common.js  --bail

ts 文件已正确转译到 javascript 并复制到输出目录,index.html 文件也存在,但有 none 个我的图像文件。

我认为我的配置文件有问题,但我看不到是什么。我为此苦苦思索了好几个小时,非常感谢任何帮助。

谢谢

您应该使用 url-loader 加载图像。示例代码如下。

{
  module: {
    loaders: [
      { test: /\.(jpe?g|png|gif|svg)$/i, loader: 'url?limit=10000!img?progressive=true' }
    ]
  }
}

您指的是 gif 文件还是入口 js 文件中相应的 css/sass 文件。

   entry: { 
      app: './app/main.ts',
    }

Webpack 将加载所有在入口点有引用的文件。如果您的所有文件不在一个入口点。然后您可以添加多个入口点,如下所示。

   entry: { 
      app: './app/main.ts',
      image: './app/something.ts'
    }

此外,我会将 webpack.config.js 文件直接放在根目录中,以便更好地访问整个生态系统。尝试将其从配置文件夹移动到根文件夹。

为图像创建单独的入口点可能不是您想要的,这取决于您如何构建项目的 CSS 部分。作为替代方案,您可以使用 copy-webpack-plugin 或 grunt / gulp 任务复制静态文件。