【新手】webpack代码分割问题

发布于 2022-09-11 23:31:01 字数 2548 浏览 12 评论 0

如题,在index.js引入jquery 之后,使用代码分割时,会将jQuery分割出来,导致页面本来呈现天蓝渐变的不见了。
问:代码分割后,是需要把分割出来的vendors~index.js再次引入吗?
package.json

{
  "name": "webpack4",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "webpack --mode development",
    "build": "webpack --mode production",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.7.2",
    "@babel/plugin-transform-runtime": "^7.6.2",
    "@babel/preset-env": "^7.7.1",
    "babel-loader": "^8.0.6",
    "clean-webpack-plugin": "^3.0.0",
    "webpack": "^4.29.6",
    "webpack-cli": "^3.2.3"
  },
  "dependencies": {
    "@babel/polyfill": "^7.7.0",
    "@babel/runtime": "^7.7.2",
    "jquery": "^3.4.1"
  }
}

webpack.config.js

const path = require('path')

// 打包时 先删除 dist 文件,再打包
const { CleanWebpackPlugin } = require('clean-webpack-plugin')

module.exports = {
    entry: {
        app: './src/app.js', //需要打包的文件入口
        index: './src/index.js'
    },
    output: {
        publicPath: __dirname + '/dist/',//js 引用的路径或者CDN 地址
        path: path.resolve(__dirname, 'dist'), // 打包文件的输出目录
        filename: '[name].bundle.js', //代码打包后生产的 js 文件
        chunkFilename: '[name].js', // 代码拆分后的文件名
    },
    plugins: [
        new CleanWebpackPlugin() // 默认情况下,此插件将删除 webpack output.path目录中的所有文件,以及每次成功重建后所有未使用的 webpack 资产。
    ],
    module: {
        rules: [
            {
                test: /\.js$/, //使用正则匹配 js 文件
                exclude: /node_modules/, //排除依赖包文件夹
                use: {
                    loader: 'babel-loader' // 使用 babel-loader
                }
            }
        ]
    },
    optimization: {
        splitChunks: {
            chunks: 'all', //all分割所有代码,包括initial同步代码和async异步代码
        }
    }
}

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

    <script src="../dist/index.bundle.js"></script>
</body>

</html>

index.js

import jquery from 'jquery'

window.$ = window.jQuery = jquery;

$('html').css({
    width: '100%',
    height: '100%',
    background: 'linear-gradient(white,skyblue)'
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

罗罗贝儿 2022-09-18 23:31:01
  1. 学习一下 HtmlWebpackPlugin
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文