文件加载器中的意外 [路径]
Unexpected [path] in file-loader
我的图片位置:/src/assets/bitmap/sample.jpg
给出的是关键配置:
context: resolve('src')
output: {
path: resolve('builds/web'),
publicPath: '',
filename: ifProd('[name].[chunkHash].js', '[name].js')
},
...
loaders: [
{
test: /\.(png|jpg|jpeg)/,
loader: 'file-loader?name=[path][name].[ext]?[hash]'
}
]
我期望图像的输出结构如下所示:
/builds/web/assets/bitmap/sample.jpg
相反,我得到这个:
/builds/web/src/assets/bitmap/sample.jpg
如何告诉文件加载器输出路径需要相对于 /src
而不是 /
?
经过 2 天的反复试验(感谢 Webpack 文档!)我发现有一种方法可以控制文件加载器的输出并复制 source 目录的文件结构在 output 目录中。这是 Webpack 设置 context
,可用于每个加载器和每个构建。
这里有一个文件加载器的例子:
use: [{
loader: 'file-loader',
options: {
context: <path>, // The directory to draw relative paths from
name: '[path][name].[ext]'
},
},
让我们深入了解它的工作原理。
假设我们正在尝试通过 www.website.com/assets/images/user.png
加载图像,我们项目的文件结构是:
project/
├── src/
│ └── assets/
│ └── images/
│ └── user.png
└── build/
期望的结果是:
project/
├── src/
│ └── assets/
│ └── images/
│ └── user.png
└── build/
└── assets/
└── images/
└── user.png
配置为:
use: [{
loader: 'file-loader',
options: {
context: path.resolve(__dirname, 'src')
name: '[path][name].[ext]'
},
},
那是因为您想将 src
文件夹下的文件结构复制到 build
文件夹中。
如果您想从路径中删除 assets
目录,context
的值将是:path.resolve(__dirname, 'src/assets')
,文件加载器将复制从 'src/assets' 而不是,结果将是:
project/
├── src/
│ └── assets/
│ └── images/
│ └── user.png
└── build/
└── images/
└── user.png
我的图片位置:/src/assets/bitmap/sample.jpg
给出的是关键配置:
context: resolve('src')
output: {
path: resolve('builds/web'),
publicPath: '',
filename: ifProd('[name].[chunkHash].js', '[name].js')
},
...
loaders: [
{
test: /\.(png|jpg|jpeg)/,
loader: 'file-loader?name=[path][name].[ext]?[hash]'
}
]
我期望图像的输出结构如下所示:
/builds/web/assets/bitmap/sample.jpg
相反,我得到这个:
/builds/web/src/assets/bitmap/sample.jpg
如何告诉文件加载器输出路径需要相对于 /src
而不是 /
?
经过 2 天的反复试验(感谢 Webpack 文档!)我发现有一种方法可以控制文件加载器的输出并复制 source 目录的文件结构在 output 目录中。这是 Webpack 设置 context
,可用于每个加载器和每个构建。
这里有一个文件加载器的例子:
use: [{
loader: 'file-loader',
options: {
context: <path>, // The directory to draw relative paths from
name: '[path][name].[ext]'
},
},
让我们深入了解它的工作原理。
假设我们正在尝试通过 www.website.com/assets/images/user.png
加载图像,我们项目的文件结构是:
project/
├── src/
│ └── assets/
│ └── images/
│ └── user.png
└── build/
期望的结果是:
project/
├── src/
│ └── assets/
│ └── images/
│ └── user.png
└── build/
└── assets/
└── images/
└── user.png
配置为:
use: [{
loader: 'file-loader',
options: {
context: path.resolve(__dirname, 'src')
name: '[path][name].[ext]'
},
},
那是因为您想将 src
文件夹下的文件结构复制到 build
文件夹中。
如果您想从路径中删除 assets
目录,context
的值将是:path.resolve(__dirname, 'src/assets')
,文件加载器将复制从 'src/assets' 而不是,结果将是:
project/
├── src/
│ └── assets/
│ └── images/
│ └── user.png
└── build/
└── images/
└── user.png