copy-webpack-plugin:输出路径/文件名中的输出软件包版本

时间:2018-10-30 19:06:46

标签: wordpress webpack webpack-4 webpack-plugin

我是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加载此依赖项和其他依赖项,我想将其分开/外部以提供一个用户选项。

谢谢你, 丹尼尔

0 个答案:

没有答案