我正在开始使用 Webpack
我得到它生成组装的js和css文件,并移动img文件
当我运行 webpack 时,我得到
pub/bld/
├── css
│ └── common.css
├── img
│ └── image.jpg
└── js
└── common.js
现在我想生成一个manifest.json
我配置了
const ManifestPlugin = require('webpack-manifest-plugin');
module.exports = () => ({
plugins: [
new ManifestPlugin({
fileName: 'manifest.json',
})
]
});
现在,当我运行 webpack 时,会添加 manifest.json
pub/bld/
├── css
│ └── common.css
├── img
│ └── image.jpg
├── js
│ ├── runtime_manifest.js
│ └── common.js
└── manifest.json
对于这些文件,会生成此 list .json
{
"common.css": "css/common.css",
"common.js": "js/common.js",
"runtime_manifest.js": "js/runtime_manifest.js",
"img/image.jpg": "img/image.jpg",
}
我不明白为什么“*.img”文件的 list 键有“img/”前缀 但 '*.js' 和 '*.css' 键则不然。
我想最终得到像这样一致的东西
{
"css/common.css": "css/common.css",
"js/common.js": "js/main.js",
"js/runtime_manifest.js": "js/runtime_manifest.js",
"img/image.jpg": "img/image.jpg",
}
我想它需要不同的配置。
还不知道如何做到这一点。
我需要在配置中添加或更改什么?
感谢任何帮助!
编辑1:
git clone https://github.com/atown2/wt1
cd wt1
yarn install
rm -rf pub/bld
yarn run w-d
cat pub/bld/manifest.json
{
"common.css": "bld/css/common.css",
"common.js": "bld/js/common.js",
"runtime_manifest.js": "bld/js/runtime_manifest.js",
"vendor.js": "bld/js/vendor.js",
"img/image.jpg": "bld/img/image.jpg"
}
rm -rf pub/bld
yarn run w-p
cat pub/bld/manifest.json
{
"common.css": "bld/css/common.29a2491a64f9fa0bb242.css",
"common.js": "bld/js/common.06c02ae762fab74de1c2.js",
"vendor.js": "bld/js/vendor.f8169ef54a3835cf9193.js",
"runtime_manifest.js": "bld/js/runtime_manifest.f4c47723a9293e3db34d.js",
"img/image.jpg": "bld/img/image.e910e1baeaab6869d39e369296aad8f5.jpg"
}
最佳答案
问题是 list 插件根据条目选择名称。要进行调整,请实现 map
:
exports.Manifest = () => ({
plugins: [
new WebpackManifest({
fileName: 'manifest.json',
filter: (file) => !file.path.match(/\.map$/),
map: (file) => {
const extension = path.extname(file.name).slice(1)
return {
...file,
name: ['css', 'js'].includes(extension) ?
`${extension}/${file.name}` :
file.name
}
}
})
]
});
关于webpack - 如何在 webpack4 manifest.json 中为 *ALL* .js、.css 和 .png 资源设置关键前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52139737/