Webpack - 复制图像文件

时间:2016-05-20 16:12:22

标签: javascript webpack commonjs webpack-file-loader

我目前正在使用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文件也存在,但没有我的图像文件。

我认为我的配置文件有问题,但我看不清楚。我要在很长时间内敲打它,所以任何帮助都会受到赞赏。

谢谢

2 个答案:

答案 0 :(得分:0)

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

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

您是否在条目js文件中引用了gif文件或相应的css / sass文件。

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

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

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

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

答案 1 :(得分:0)

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