webpack dllPlugin如何打包vendor到html里面?

使用html-webpack-plugin只能将应用的bundle.js写到html,不能将dll生成的vendor写入,有没有什么办法?

阅读 7.4k
3 个回答

可以使用 add-asset-html-webpack-plugin,将打包后的文件,加入html中。
通过以下方式引用,或者参考下我的vue-2.0template

喜欢的话可以给个star

new HtmlWebpackPlugin({
  filename: itemPath,
  template: template,
  inject: true,
  title: item.title || 'Document',
  chunks: chunks,
  chunksSortMode: 'dependency',
}),
new AddAssetHtmlPlugin([{
  filepath: path.resolve(__dirname, config.build.dll.basePath, config.build.dll.fileName),
  outputPath: utils.assetsPath('common/js/'),
  publicPath: path.join(config.build.publicPath, 'common/js'),
  includeSourcemap: true
}])

自问自答:
1、 将vendor.js生成到/dll/
2、 template.html使用html-webpack-plugin的模板语法

<body>
<% if(htmlWebpackPlugin.options.isDev) {%>
<script src="<%= htmlWebpackPlugin.options.vendor %>"></script>
<% } %>

</body>

3、 设置webpack.dev.config.js

const manifest = require('dist/dll/manifest.json')

//...
plugins:[
    new HTMLPlugin({
        template: './src/template.html',
        filename: 'index.html'
        vendor: '/dll/' + manifest.name + '.js' //manifest就是dll生成的json
    })
]

仅仅用于开发环境

html-webpack-include-assets-plugin 可以解决这个问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题