返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vuepackage.json配置深入分析
  • 532
分享到

Vuepackage.json配置深入分析

Vuepackage.jsonVuepackage.json配置 2023-01-12 18:01:29 532人浏览 独家记忆
摘要

目录前言一、依赖配置dependenciesdevDependenciespeerDependenciesoptionalDependenciesbundleDependencies

前言

package.JSON是每个前端项目都会有的json文件,位于项目的根目录中。很多脚手架在创建项目的时候会帮我们自动初始化好 package.json。package.json有许多配置与项目息息相关,了解他们有助于对项目的开发,上一篇文章已经完成 package.json 的基础配置的讲解,接下来开始剩余部分的学习

今天主要介绍一些常用的配置,分为了七大类,分别是:

  • 依赖配置
  • 发布配置
  • 系统配置
  • 第三方配置

一、依赖配置

项目开发过程中会依赖其他包,需要在 package.json 里配置这些依赖的信息。

dependencies

运行依赖,也就是项目生产环境下需要用到的依赖。比如 Vue,vuex以及组件库等。

使用 npm install xxx 或则 npm install xxx --save 时,会被自动插入到该字段中。

  "dependencies": {
    "element-plus": "^2.2.28",
    "pinia": "^2.0.28",
    "sass": "^1.57.1",
    "vite": "^4.0.3",
    "vue": "^3.2.45",
    "vue-router": "^4.1.6"
  },

devDependencies

开发依赖,项目开发环境需要用到而运行时不需要的依赖,用于辅助开发,通常包括项目工程化工具比如 vite,eslint 等。

使用 npm install xxx -D 或者 npm install xxx --save-dev 时,会被自动插入到该字段中。

  "devDependencies": {
    "cz-git": "^1.4.1",
    "eslint": "^8.30.0",
    "eslint-config-airbnb-base": "^15.0.0",
    "eslint-config-prettier": "^8.5.0",
    "eslint-define-config": "^1.12.0",
    "eslint-plugin-import": "^2.26.0",
    "eslint-plugin-prettier": "^4.2.1",
    "eslint-plugin-vue": "^9.8.0",
    "husky": "^8.0.0",
    "less": "^4.1.3",
    "lint-staged": "^13.1.0",
    "postCSS-html": "^1.5.0",
    "postcss-less": "^6.0.0",
    "prettier": "^2.8.1",
    "stylelint": "^14.16.0",
    "stylelint-config-html": "^1.1.0",
  }

peerDependencies

同伴依赖是一种特殊的依赖,不会被自动安装,通常用于表示与另一个包的依赖与兼容性关系来警示使用者。

optionalDependencies

可选依赖,表示依赖是可选的,它不会阻塞主功能的使用,安装或者引入失败也无妨。这类依赖如果安装失败,那么 npm 的整个安装过程也是成功的。

使用 npm install xxx -O 或者 npm install xxx --save-optional 时,依赖会被自动插入到该字段中。

bundleDependencies

打包依赖。它的值是一个数组,在发布包时,bundleDependencies 里面的依赖都会被一起打包。

在执行 npm pack 打包生成 tgz 压缩包中,将出现 node_modules 并包含 React 和 react-dom。

需要注意的是,这个字段数组中的值必须是在 dependencies,devDependencies 两个里面声明过的依赖才可以。普通依赖通常从 npm reGIStry 安装,但当你想用一个不在 npm registry 里的包,或者一个被修改过的第三方包时,打包依赖会比普通依赖更好用。

二、发布配置

主要是一些和项目发布有关的配置

private

如果是私有项目,不希望发布到公共 npm 仓库上,可以将 private 设为 true。

"private": true

publishConfig

publishConfig 就是 npm 包发布时使用的配置。

比如在安装依赖时指定了 registry 为 taobao 镜像源,但发布时希望在公网发布,就可以指定 publishConfig.registry。

"publishConfig": {
  "registry": "https://registry.npmjs.org/"
}

三、系统配置

项目有关的系统配置,比如 node 版本或操作系统兼容性之类。但是值得注意的是这些要求只会起到提示警告的作用,即使用户的环境不符合要求,也不影响安装依赖包。

engines

一些项目由于兼容性问题会对 node 或者包管理器有特定的版本号要求,比如:要求 node 版本大于等于 12 且小于 16,同时 pnpm 版本号需要大于 7。

"engines": {
  "node": ">=12 <16",
  "pnpm": ">7"
}

os

linux 上能正常运行的项目可能在 windows 上会出现异常,使用 os 字段可以指定项目对操作系统的兼容性要求。

"os": ["darwin", "linux"]

cpu

指定项目只能在特定的 CPU 体系上运行。

"cpu": ["x64", "ia32"]

四、第三方配置

一些第三方库或应用在进行某些内部处理时会依赖这些字段,使用它们时需要安装对应的第三方库。

types或者typings

指定 typescript 的类型定义的入口文件

"types": "./index.ts",

browserslist

设置项目的浏览器兼容情况。babel 和 autoprefixer 等工具会使用该配置对代码进行转换。当然你也可以使用 .browserslistrc 单文件配置。

"browserslist": [
  "> 1%",
  "last 2 versions"
]

sideEffects

显示设置某些模块具有副作用,用于 webpack 的 tree-shaking 优化

比如在项目中整体引入 Ant Design 组件库的 css 文件。

import 'antd/dist/antd.css'; 

如果 Ant Design 的 package.json 里不设置 sideEffects,那么 WEBapck 构建打包时会认为这段代码只是引入了但并没有使用,可以 tree-shaking 剔除掉,最终导致产物缺少样式。

lint-staged

lint-staged 是用于对 git 的暂存区的文件进行操作的工具,比如可以在代码提交前执行 lint 校验,类型检查,图片优化等操作。

"lint-staged": {
  "src*.{js,jsx,ts,tsx}": [
    "eslint --fix",
    "git add -A"
  ]
}

lint-staged 通常配合 husky 这样的 git-hooks 工具一起使用。git-hooks 用来定义一个钩子,这些钩子方法会在 git 工作流程中比如 pre-commit,commit-msg 时触发,可以把 lint-staged 放到这些钩子方法中。

五、结语

今天我们简单了解了 package.json 的常见配置。有了这些知识,我们可以更好的了解项目。但 package.json 里的内容远不止如此,需要我们进一步学习。

到此这篇关于Vue package.json配置深入分析的文章就介绍到这了,更多相关Vue package.json内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vuepackage.json配置深入分析

本文链接: https://lsjlt.com/news/177568.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vuepackage.json配置深入分析
    目录前言一、依赖配置dependenciesdevDependenciespeerDependenciesoptionalDependenciesbundleDependencies...
    99+
    2023-01-12
    Vue package.json Vue package.json配置
  • MyBatis核心配置文件深入分析
    目录环境配置与 mappers 映射器属性(properties)设置(settings)类型别名(typeAliases)MyBatis 的核心配置文件是 mybatis-conf...
    99+
    2022-12-27
    MyBatis配置文件 MyBatis配置文件有哪些
  • SpringBoot深入分析AutoConfigurationImportFilter自动化条件配置源码
    目录1. AutoConfigurationImportFilter的作用2. AutoConfigurationImportFilter UML类图说明3. FilteringSp...
    99+
    2024-04-02
  • MySQL最左匹配原则深入分析
    目录前言全列匹配最左前缀匹配精确匹配查询条件没有指定索引第一列匹配某列的前缀字符串范围查询查询条件中含有函数或表达式前言 接下来我们通过几种情况来描述最左匹配原则的使用。首先如下所示,为userName、phone以及u...
    99+
    2024-04-02
  • 深入浅析JVM中的参数分配
    深入浅析JVM中的参数分配?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、堆参数设置-XX:+PrintGC 使用这个参数,虚拟机启动后,只要遇到GC就会打印日志-XX:...
    99+
    2023-05-31
    jvm
  • 深入浅析SpringBoot自动配置原理
    SpringBoot2.3.1版本源码 一、SpringBoot启动的时候加载主配置类,通过@EnableAutoConfiguration注解开启了自动配置功能 。 二...
    99+
    2024-04-02
  • 深入浅析Hibernate中的配置文件
    今天就跟大家聊聊有关深入浅析Hibernate中的配置文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先我们看一下hibernate的主配置文件<!DOCTYPE hibe...
    99+
    2023-05-31
    hibernate te
  • Java NIO深入分析
    以下我们系统通过原理,过程等方便给大家深入的简介了Java NIO的函数机制以及用法等,学习下吧。前言本篇主要讲解Java中的IO机制分为两块:第一块讲解多线程下的IO机制第二块讲解如何在IO机制下优化CPU资源的浪费(New IO)Ech...
    99+
    2023-05-30
    java nio ava
  • SpringBoot静态资源与首页配置实现原理深入分析
    目录一、静态资源导入1、webjars2、静态资源映射规则3、自定义静态资源路径二、首页配置和图标1、首页配置2、图标一、静态资源导入 关键源码可以看WebMvcAutoConfig...
    99+
    2024-04-02
  • 深入浅析Java中的内存分配机制
    本篇文章给大家分享的是有关深入浅析Java中的内存分配机制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java 内存分配深入理解Java程序运行在JVM(Java ...
    99+
    2023-05-31
    java 内存分配 ava
  • SpringBoot自动配置源码深入刨析讲解
    目录自动配置底层源码分析总结自动配置底层源码分析 本次springboot源码来自2.6.6版本。 @EnableAutoConfiguration源码解析 在springboot中...
    99+
    2024-04-02
  • 深入解析SpringBatch适配器
    目录一、SpringBatch适配器二、SpringBatch适配器实战(Tasklet举例)一、SpringBatch适配器 1、SpringBatch分别有读(reader)、处...
    99+
    2024-04-02
  • SpringAOP源码深入分析
    目录1. 前言2. 术语3. 示例4. @EnableAspectJAutoProxy5. AbstractAutoProxyCreator6. 构建Advisor7. 创建代理对象...
    99+
    2023-01-03
    Spring AOP Spring AOP源码
  • ReactFiber原理深入分析
    目录为什么需要 fiberfiber 之前fiber 之后fiber 节点结构dom 相关属性tagkey 和 typestateNode链表树相关属性副作用相关属性flagsEff...
    99+
    2023-01-10
    React fiber原理 React fiber架构 React fiber算法
  • JavaArrayList源码深入分析
    1.ArrayList 是基数组结构的,需要连续的内存空间 从构造函数可以看出,ArrayList内部用一个Object数组来保存数据。 对于无参构造,ArrayList会创建一个大...
    99+
    2024-04-02
  • JavaLinkedList源码深入分析
    1.LinkedList是基于链表的,而且是一个双向链表,不需要连续内存空间。 //可以看出Node是一个双链表结构 private static class Node&l...
    99+
    2024-04-02
  • JavaLinkedHashMap深入分析源码
    目录一、LinkedHashMap的类继承关系二、源码分析1.自己对LinkedHashMap的理解2.如何做到双向链的增删改查(1).增(2).删(3).改(4).查3.遍历一、L...
    99+
    2022-11-13
    Java LinkedHashMap原理 Java LinkedHashMap源码
  • ReactFiber源码深入分析
    目录前言React架构前世今生React@15及之前React@16及之后FiberFiber简单理解Fiber结构Fiber工作原理mountupdate前言 本次React源码参...
    99+
    2022-11-13
    React Fiber源码 React Fiber原理 React Fiber算法
  • GoLangstring类型深入分析
    目录并发不安全竞态竞争字符串优化文章运行环境:go version go1.16.6 darwin/amd64 并发不安全 看下面的代码,大家觉得会输出什么?大多数人应该都会觉得输出...
    99+
    2023-01-28
    Go string Go string类型
  • 深入讲解Java Maven配置
    目录首先说明maven配置都是那些配置1. pom.xml 配置2. maven 的settings.xmla. mirrorsb. serversc. profiles总结由于ma...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作