问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vue-cli中修改webpack打包策略,某个第三方库单独打包怎么实现

发布网友 发布时间:2022-04-22 18:56

我来回答

3个回答

懂视网 时间:2022-04-22 23:17

这篇文章主要介绍了Parcel.js + Vue 2.x 极速零配置打包体验 的相关资料,需要的朋友可以参考下

继 Browserify、Webpack 之后,又一款打包工具 Parcel 横空出世

Parcel.js 的官网有这样的自我介绍 “极速零配置Web应用打包工具”

简单接触了一下,单从效率上来说,确实要比 webpack 强上不少,可坑也挺多,未来升级之后应该会逐渐普及

官方文档:https://parceljs.org/getting_started.html

官方 GitHub:https://github.com/parcel-bundler/parcel

一、基本用法

Parcel 可以用 npm 或 yarn 安装,个人习惯用 npm,这篇博客将基于 npm 讲解

首先需要全局安装 Parcel.js // 当前版本 1.3.0

npm install -g parcel-bundler

然后写一个配置文件...不对,这不是 webpack,这是 parcel, 零配置打包

直接创建项目目录,用写个一个简单的传统页面

然后在项目根目录打开命令行工具,输入以下命令

parcel index.html -p 3030

然后在浏览器中打开 http://localhost:3030/ 就能打开刚才开发的页面

上面的命令中 -p 用于设置端口号,如果不设置,则默认启动 1234 端口

parcel 支持热更新,会监听 html、css、js 的改变并即时渲染

// 实际上通过 src 引入的 css、js 无法热更新

开发完成后,输入以下命令进行打包

parcel build index.html

打包后会生成 dist 目录

桥豆麻袋,说好的打包呢?怎么还是这么多文件?

骚年莫急,这是用传统写法写的页面,连 package.json 都没有,接下来改造成模块化的项目,就能看到打包的效果了

好吧,那我先手动打开 index.html 看看效果...等等...为啥 css 没被加载?

这是因为打包后的路径都是绝对路径,放在服务器上没问题,如果需要本地打开,就得手动修改为相对路径

二、应用在模块化项目中

正片开始,首先将上面的项目改造成模块化项目

通过 npm init -y 命令创建一个默认的 package.json,并修改启动和打包命令

这样就可以直接通过 npm run dev 启动项目,npm run build 执行打包了

之前是全局安装的 parcel,实战中更推荐在项目中添加依赖

npm install parcel-bundler -S

上面是一个传统页面,使用 link 引入的 css

既然要改造为模块化项目,那就只需要引入一个 main.js,然后在 main.js 中引入其他的 css 和 js 文件

所以需要用到 import 等 ES6 语法,那就安装一个 babel 吧

npm install babel-preset-env -S

然后在根目录创建一个 .babelrc 文件,添加以下配置:

{
 "presets": ["env"]
}

再安装一个 css 转换工具,比如 autoprefixer

npm install postcss-modules autoprefixer -S

创建 .postcssrc 文件:

{
 "modules": true,
 "plugins": {
 "autoprefixer": {
 "grid": true
 }
 }
}

官方文档还推荐了一款编译 html 资源的插件 PostHTML,不过这里暂时不需要

自行改造代码,最后 npm run build 打包

可以看到 js 和 css 已经整合,其内容也经过了 babel 和 autoprefixer 的编译

三、在 Vue 项目中使用 Parcel

官方文档给出了适用于 react 项目的配方

但我常用的是 vue,研究了好久,终于找到了方法

依旧使用 index.html 作为入口,以 script 引入 main.js:

<!-- index.html -->
<body>
 <p id="app"></p>
 <script src="./src/main.js"></script>
</body>

// main.js

import 'babel-polyfill'
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './css/common.css'

Vue.config.productionTip = false

const vm = new Vue({
 el: '#app',
 router,
 render: h => h(App)
})

这里要推荐一个很厉害的插件 parcel-plugin-vue,它让 parcel 和 vue 成功牵手

再加上之前提到的 babel、autoprefixer,最后的 package.json 是这样的:

{
 "name": "ParcelVue",
 "version": "1.0.0",
 "description": "The project of parcel & vue created by Wise Wrong",
 "main": "main.js",
 "scripts": {
 "dev": "parcel index.html -p 3030",
 "build": "parcel build index.html"
 },
 "keywords": [
 "parcel",
 "vue"
 ],
 "author": "wisewrong",
 "license": "ISC",
 "devDependencies": {
 "autoprefixer": "^7.2.3",
 "babel-polyfill": "^6.26.0",
 "babel-preset-env": "^1.6.1",
 "parcel-bundler": "^1.3.0",
 "parcel-plugin-vue": "^1.4.0",
 "postcss-modules": "^1.1.0",
 "vue-loader": "^13.6.1",
 "vue-style-loader": "^3.0.3",
 "vue-template-compiler": "^2.5.13"
 },
 "dependencies": {
 "vue": "^2.5.13",
 "vue-router": "^3.0.1"
 }
}

一定记得在根目录创建 .postcssrc 和 .babelrc 文件

然后 npm install 安装依赖, npm run dev 启动项目,npm run build 打包项目

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在Vue中设置背景图片

如何解决vue打包后静态资源图片失效的问题

如何把vue-router和express项目部署到服务器上去

在Vue 2.5.2下使用axios + express本地请求404的解决方法

使用vue和react来实现展开收起等效果

在vue中如何实现webpack打包优化

详细解说vue编码风格

热心网友 时间:2022-04-22 20:25

确实,每次打包从入口开始,会parse所有的依赖,多的时候竟然打包一次要2秒多,简直不能忍。然而,有几个解决方案,最有效的,是使用weboack
的watch,只有文件md5变化时,才会重新打包,并且只parse有变化的文件,其他没变化的文件是使用缓存的。这样子,打包时间迅速降到200ms
以内。
再优化下去的话,我们要知道webpack打包的过程中做了啥,首先是解析依赖啦,然后就是各种各样的loader。从解析依赖的角度入手,我们可以bower install一些打包好的文件,然后通过设置别名让依赖指向这个文件,这样就减去了第三方库的依赖解析时间。
然后各种各样的loader也是很耗时的,一种办法是在loader里面配include,让loader只针对特殊资源。另一种办法是让你的第三方库noparse,具体怎么设置你查文档吧。

热心网友 时间:2022-04-22 21:43

比如,我想单独打包echarts,我做出以下尝试:

得到的结果是:

显然,echarts不只1K,所以这么做是不对的,但我不知道怎么做才是正确的。

为了跟上面的尝试做对比,我把我做的地方注释掉,如下图:

得到的结果:

app.XXX.js的大小竟然变了,是在搞不懂是哪出了问题。

我应该怎样才能配置使之单独将echarts模块单独打包呢?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
急,小弟该学哪种街舞呢? 少儿街舞popping好还是breaking好 急!!!我适合学breaking还是popping?现在身高165,体重115 。 我该学什么街舞舞种?适合我的 卧龙生的武侠小说,当年各种被撕页,省略号让人记忆犹新 电信话费用了700多,可是没欠费,这是什么情况? 电信交网费送手机说是最低消费69除了这69外还会再乱扣费吗谁用过 我的GPRS/3G数据流量套餐费是20元,小计22元是什么意思?有没有知道... 为什么我都没怎么用,并且没打电话,只是用QQ浏览器浏览网页就欠费了... 劳动关系确立证明有哪些 什么是投保种类和形式 机械键盘性价比高的牌子 日语中,知道了怎么说 各国知道了怎么说 怎样把vue.js打包进公用js webpack 四季豆豆夹出现凹陷水印是什么病虫害? 帮忙去掉图片右下角水印? 豆豆鞋有水印怎么去除 36岁属老鼠的要注意什么? 天富能源20150623日能买入股吗 深圳宝安区沙井镇正海华府哪里有饺子皮买 达真堪布:如何修持施受法,佛教网 达真堪布四无量心指什么以及如何修学 达真堪布:佛弟子该如何做生意 达真堪布:因吃素而影响人际关系怎么办 达真堪布:哪些人还需要修四外加行? 达真堪布:不管对什么样的众生都一定要广结善缘 达真堪布:真正的修行人是什么样的 达真堪布答疑:工作忙没有时间修行怎么办 达真堪布傲慢有哪俩大特点,他们会影响修行吗? 微信对接了第三方平台,微信公众号群发功能能用吗? 我和他的水果刀图案谁的好看?黑的是我 梦见我外婆在坟墓里掏出一个水果刀,是金色的上面还刻有龙的图案,刀的最顶端刻有日期1837年。就是离现... 汽车刹不住车怎么办呢? 下雨天汽车刹车刹不住? 绣虪是什么意思 如何从Sketch向Xcode自动导出图形资源 K8小r刹车热了刹不住怎么办 汽车大概是多少码就会刹不住?小型汽车。 写一篇说你具有创造力,有打破常规的思维方式的作文,300字左右,不用太多,四年级水平。 下雪天刹车刹不住怎么办 开车时刹车不灵该怎么办 加急!!怎么把图从sketch up中导出成原大小(比如图中标的是10cm的线段真实的图片中就是10cm)?或者有什 碟刹刹不住了? 刹车不灵怎么办? 我有一只橙*的黄玉石手镯, 用钥匙一划就出现白色的划痕,请问这只玉镯是真的还是假的? 为什么做手术要停戴隐形眼镜?停多久合适? 做剖腹产手术时可以戴隐形眼镜吗? 做过近视眼手术还能戴隐形眼镜吗 鼻综合手术时能不能戴隐形眼镜