vue+webpack如何打包才能最大程度的不影响线上的代码?

发布于 2022-09-06 05:02:28 字数 3215 浏览 19 评论 0

使用vue init webpack demo生成项目模板,
在/src/components目录下新建a.vue,随便新增一点内容,代码如下:

<template>
    <div>component 1</div>
</template>
<script>
    export default {
        data(){
            return {

            }
        },
        methods:{
            getData () {
                console.log(1);
            }
        },
        mounted(){
            this.getData();
        }
    }
</script>

<style scoped >
    .box {
        width: 1px;
        height: 10px;
        background-color: #ccc;
    }
</style>

修改/src/router/index.js,使用路由懒加载加载响应的组件,代码如下:

import Vue from 'vue'
import Router from 'vue-router'

const HelloWorld = () => import('@/components/HelloWorld')
const A = () => import('@/components/a.vue')
Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {path: '/a',name: 'A',component: A},
  ]
})

修改/config/index.js中的build.productionSourceMap=false,打包不生成对应的map文件,命令行执行命令:npm run build,得到对应的dist文件夹,内容如下:

clipboard.png

继续在/src/components目录下新建b.vue,代码如下:

<template>
    <div>component B</div>
</template>
<script>
    export default {
        data(){
            return {

            }
        },
        methods:{
            fetchData (page) {
                console.log(page);
            }
        },
        mounted(){
            this.fetchData(2);
        }
    }
</script>

<style scoped >
    .box {
        width: 1px;
        height: 10px;
        background-color: red;
    }
</style>

新增对应的路由:

import Vue from 'vue'
import Router from 'vue-router'

const HelloWorld = () => import('@/components/HelloWorld')
const A = () => import('@/components/a.vue')
const B = () => import('@/components/b.vue')

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {path: '/a',name: 'A',component: A},
    {path: '/b',name: 'B',component: B},
  ]
})

命令行执行npm run build 打包,结构目录如下:

clipboard.png

使用代码根据对比两次打包之后的结果,
0.edeec9e7398311b1e3f1.js vs 0.4f388e450a65c74371bf.js
结果是代码完全不一样

clipboard.png

而第一次打包生成的0.edeec9e7398311b1e3f1.js对应的第二次打包的文件,其实是1.a79f1cfd1b16dba782c6.js,即便如此,可是代码也有稍微的变化,文件名也发生了变化

clipboard.png

问题:这只是模拟的一个微场景,实际工作中,我们已经开发了40多个路由以及对应的N多组件,并且是将打包生成的dist文件放在另外一个git仓库(在这个仓库里面的静态资源我们做了CDN缓存);
现在接到需求新增了一个路由,打包一下,通过git提交,发现dist目录下面的文件完全变化了,也就是,之前做的CDN缓存也完全没有任何作用啦;
如何最大程度的保证后面的打包不影响上一次打包之后的文件名和文件内容呢?

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

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

发布评论

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

评论(1

囚你心 2022-09-13 05:02:28

就是因为每次修改都要全部打包,影响太大,所以我们公司就放弃了spa

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文