当前位置: 首页 > news >正文

网络推广外包网络优化网站建设

网络推广外包,网络优化网站建设,杭州网站建设品牌,百度推广点击一次多少钱Monorepo架构可以把多个独立的系统放到一起联调#xff0c;本文记录基于pnpm workspace功能#xff0c;如何构建将vitepress和组件库进行联调#xff0c;并且使用turbo进行任务顺序编排。 技术栈清单#xff1a; pnpm 、vitepress 、turbo 一、需求分析 1、最终目标…Monorepo架构可以把多个独立的系统放到一起联调本文记录基于pnpm workspace功能如何构建将vitepress和组件库进行联调并且使用turbo进行任务顺序编排。 技术栈清单 pnpm 、vitepress 、turbo 一、需求分析 1、最终目标 我们最终需要实现这样的一个Monorepo项目架构 --project--package.json--packages--docs--package.json--project-one--package.json--pnpm-workspace.yaml其中各个目录功能如下 project根目录 packages子项目包 packages/docs基于vitepress的文档项目 packages/project-one组件库 2、Monorepo技术选型 实现Monorepo架构的方式主要有以下两种 lernayarn pnpm中workspace配置 这里选择后者因为基于pnpm的包管理逻辑使用软硬链接并且重复使用本地依赖包缓存可以大大提升安装效率节省依赖包存储空间。而且pnpm还继承了npm的所有功能并且支持node版本管理这里非常推荐pnpm。 3、为什么使用vitepress 之前有使用过vuepress后来vite伴随vue3一起被推出体验后果断切换到vite基于esmodule的调试模式调试效率直线提升。所以同理这里也同样推荐使用vitepress而不是vuepress。 4、turbo的作用 turbo全名turborepo本身也是一个Monorepo管理工具。这里主要使用其任务编排能力能够按正确的顺序执行Monorepo内的项目的任务。 例如Monorepo里有三个项目ABC。A和C还需要依赖于B。也就是说B项目需要先构建好后A和C才能构建。 正常每个项目都按照这个顺序做任务编排lint-build-test-deploy。即检查规范-构建项目-测试项目-部署项目。 从上图可以看到使用lerna时A、B、Cd这三个项目中的lint、build、deploy都是并行进行的。如果A、C都依赖B那么A、C在build的时候很可能 B d还没有build完成会拖慢A、C的build效率。 但是turbo能够将每个项目里的任务进行拓扑排序再执行。即图中B项目并行执行linttestbuild之后A和C就可以更快的执行构建大大提高了整体的效率。 二、开发 1、文件结构 首先创建如下文件结构 --project--package.json--packages--docs--package.json--project-one--package.json--pnpm-workspace.yaml--turbo.json创建完project根目录、packages/docs、packages/project-one后分别执行pnpm init做项目初始化生成package.json文件。 并且在跟目录创建 pnpm-workspace.yaml 文件 packages:- apps/*- packages/*识别packages和apps目录下的项目作为子项目。这样在执行pnpm add XXX --workspace时就会到子项目中去寻找。 2、turbo.json {$schema: https://turbo.build/schema.json,pipeline: {build: {dependsOn: [^build],outputs: [dist/**]},lint: {},dev: {cache: false,persistent: true},clean: {cache: false}} }3、根目录script命令行代理 #package.json scripts: {turbo-test: turbo run test,turbo-build: turbo run build,test: echo \Error: no test specified\ exit 1,docs:dev: pnpm --filter \docs\ dev,docs:build: pnpm --filter \docs\ build,docs:serve: pnpm --filter \docs\ serve,docs:preview: pnpm --filter \docs\ preview,one:dev: pnpm --filter \project-one\ dev }#docs package.json scripts: {dev: vitepress dev,build: vitepress build,serve: vitepress serve,preview: vitepress preview,test: echo \Error: no test specified\ }#project-one package.json scripts: {dev: node index2.js,build: node index2.js,test: echo \Error: no test specified\ }4、初始化project-one项目 代码如下 #index.js const addOne (x 0, msg 未填) {console.log(调用project-one的项目是, msg);return x 1; } export default addOne#index2.js console.log(nihao index2);5、初始化docs项目 docs使用vitepress构建打开终端进入docs目录执行下面命令对docs初始化 # 安装vitepress pnpm add -D vitepress # 初始化项目这里会出现交互式命令行默认回车下一步就行 pnpm dlx vitepress init调整docs/package.json代码如下 {name: docs,version: 1.0.0,description: ,main: index.js,scripts: {dev: vitepress dev,build: vitepress build,serve: vitepress serve,preview: vitepress preview,test: echo \Error: no test specified\},keywords: [],author: ,license: ISC,dependencies: {project-one: workspace:^,vitepress: 1.0.0-rc.20,vue: ^3.2.45},devDependencies: {} }创建docs/index.md文件代码如下 --- layout: home hero:name: VitePresstext: Vite Vue powered static site generator.tagline: Lorem ipsum...actions:- theme: brandtext: Get Startedlink: https://github.com/jkkdeng- theme: alttext: View on GitHublink: https://github.com/jkkdengfeatures:- icon: ️title: Simple and minimal, alwaysdetails: Lorem ipsum...- icon: ️title: Simple and minimal, alwaysdetails: Lorem ipsum...- icon: ️title: Simple and minimal, alwaysdetails: Lorem ipsum... --- script setup import addOne from project-one addOne(10,docs) /scriptimport addOne from project-one这行会在workspace中寻找project-one项目下的package.json文件识别main: index.js,配置然后获取到export的addOne方法。最终打印到浏览器控制台。 6、执行 到这里就基本都配置完成了这里我们把项目跑起来看下运行效果。 我们打开终端命令行并进入project根目录. 执行pnpm run turbo-build #turbo.json build: {dependsOn: [^build] },系统会找到turbo.json中pipelinebuild下的配置dependsOn: [^build]^build含义是指上游的build任务优先执行。猜测turbo应该对各个子包中的package.json进行扫描查看是否存在依赖关系例如我们这里是docs项目依赖project-one项目所有优先对proect-one项目进行build然后在对docs进行build。看下面的运行结果也的确如此。 执行pnpm run turbo-test #turbo.json test: {dependsOn: [build] },这里的build就是pipeline中的build任务含义是每个项目要执行自己的test任务就要先执行build任务。 可以看到执行顺序依次是 project-one - buildproject-one - testdocs - builddocs - test 执行pnpm run one:dev 执行pnpm run docs:dev 源码
http://www.hkea.cn/news/14453577/

相关文章:

  • 买的网站模板怎么做沈阳网站建设蓝顶网络
  • 广州网站建设支付忻州网络公司网站建设
  • 管理手机网站模板凡科网下载
  • 帝国和WordPress比较信阳优化公司
  • wordpress更换网站常州网站建设费用
  • 个人网站免费申请怎样建立一个网站步骤
  • 网站建设如何实现检索功能轻量级wordpress主题
  • 网站建设怎么汇报做网站付多少定金
  • dw做aspx网站网站制作top
  • 网站认证中心官网长沙网站排名优化
  • 清溪镇做网站网站可信图标
  • 织梦网站栏目字体怎么调人才网站开发方案
  • 淄博专业网站建设价格购物网站建站系统
  • 一般纳税人网站建设多少税率视频网站怎么做可以播放电视剧
  • 网站建设企业网站建设网站手机客户端开发
  • 海口企业自助建站系统wordpress-5.2.2英文转中文
  • 做暖暖网站开网店怎么推广运营
  • 南宁美容网站建设北京模板网站建设
  • 怎样注册公司网站建立网页巩义网站推广优化
  • 做网站怎么那么难wordpress怎么放验证文件
  • 嘉兴网站建设服务计算机专业主要学什么前景怎么样
  • 网站源码网呼和浩特网站建设SEO优化
  • 汉语国际网站建设深圳画册设计公司排行榜
  • 上虞区住房和城乡建设部网站wordpress 引导页
  • flash网站带后台住房和城乡建设部主网站
  • 阿里巴巴的网站怎么做徐州自助建站系统
  • 营销型网站建设的利与弊国内精美网站欣赏
  • 如何推广视频号南昌网站seo厂家
  • 免费书画网站怎么做的成华区微信网站建设公司
  • 山东企业站点seo专做医药中间体的网站