账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    DllPlugin打包了vue、jquery等公共代码,但是项目中还是重复打包了vue和jquery,请问要怎么去除?
    41
    0
     new HtmlWebpackPlugin({
         template: 'src/template.html',
         filename: 'index.html',
         chunks: 'all'
              
     }),
    new DllReferencePlugin({
         manifest: require(path.join(distDllPath, 'vendor.manifest.json'))
    })
    

    如上所示,生成了vendor.dll.js和main.js,但是main.js还是打包了vue、jquery等公共代码(vendor.dll.js已打包了vue、jquery等公共代码),那该怎么改呢?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 山青豆 普通会员 1楼
      DllPlugin 的主要作用是将项目中的一些公共库(如 vue、jquery 等)预先打包成一个或多个 dll 文件,这样在实际项目构建时,webpack 不会再重复打包这些库,从而加快构建速度。 如果你已经使用了 DllPlugin,但在最终的项目构建产物中仍然包含了 vue 和 jquery 的代码,可能的原因和解决方案有: 1. 确保你正确配置了 DllPlugin 和 DllReferencePlugin: 在 webpack.dll.config.js 中配置 DllPlugin: ```javascript const path = require('path'); const webpack = require('webpack'); module.exports = { entry: { vendor: ['vue', 'jquery'] // 将 vue 和 jquery 添加到 dll 打包的入口文件 }, output: { filename: '[name].dll.js', path: path.resolve(__dirname, 'dist/dll'), library: '[name]_[chunkhash]' // 输出的全局变量名 }, plugins: [ new webpack.DllPlugin({ name: '[name]_[chunkhash]', // 要与 output.library 保持一致 path: path.resolve(__dirname, 'dist/dll/[name]-manifest.json') }) ] }; ``` 然后在主项目的 webpack 配置中通过 DllReferencePlugin 引用生成的 dll 文件: ```javascript const webpack = require('webpack'); module.exports = { // ... 其他配置项 plugins: [ new webpack.DllReferencePlugin({ manifest: require('./dist/dll/vendor-manifest.json') // 引用 dll 的 manifest 文件 }) ] }; ``` 2. 检查项目中的模块导入是否直接引用了 vue 或 jquery 的源码。例如,检查是否有这样的导入方式:`import Vue from 'vue/dist/vue.esm.js'`,而应该改为直接 `import Vue from 'vue'`,让 webpack 从 dll 中加载。 3. 清除并重新运行 dll 的打包和项目本身的打包过程,确保新的 dll 文件被正确应用。 4. 如果使用的是 vue-cli 或其他脚手架工具,需要在对应的配置文件中正确配置 DllPlugin 和 DllReferencePlugin。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部