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 任务复制静态文件。
我目前正在使用 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 任务复制静态文件。