我是webpack的新手(在撰写本文时,我正在使用v4.23),并且正在使用copy-webpack-plugin将某些资产移动到我的dist
目录中。它用于WordPress主题(不相关),而不是像WordPress通常支持的那样将版本作为查询字符串属性附加到脚本链接(例如:/css/some-package/style.css?ver=1.2.3
),而是要添加依赖项软件包版本到路径(例如:/css/some-package/1.2.3/style.css
)。
我的问题:是否可以使用copy-webpack-plugin在输出文件名中引用依赖软件包 version ?
我当前的cwp配置:
plugins: [
// ...
new CopyWebpackPlugin([
{ from: 'node_modules/purecss/build/pure-min.css', to: 'css/purecss/pure-min.css', toType: 'file' }
])
]
我希望输出为:
to: 'css/purecss/[package_version]/pure-min.css'
以下可以起作用,但感觉有点像贫民窟,我在想可能还有更审慎的方法吗? (这还要求我在发行版中加入package.json
,这不是世界末日,但不是我们想要的):
const pkg = require( './package.json' );
// ...
{ from: 'node_modules/purecss/build/pure-min.css', to: 'css/purecss/' + pkg.dependencies.purecss.replace( /[^0-9.]/g, '' ) + '/pure-min.css', toType: 'file' }
// Result: /css/purecss/1.0.0/pure-min.css
我知道webpack有其自己的缓存清除/哈希,但是我喜欢版本号而不是路径/文件名中的哈希(至少对于外部而言;出于与WordPress相关的晦涩原因)。我想我可以捆绑CSS,但是如果他们选择在主题admin中通过CDN加载此依赖项和其他依赖项,我想将其分开/外部以提供一个用户选项。
谢谢你, 丹尼尔