• package.json属性


    添加链接描述
    一、必须属性

    1. name
      定义项目的名称,不能以".“和”_"开头,不能包含大写字母
    2. version
      定义项目的版本号,格式为:大版本号.次版本号.修订号

    二、描述信息

    1. description 项目描述
    2. keywords 项目关键词
    3. author 项目作者
    4. contributors 项目贡献者
    5. homepage 项目主页地址
    6. repository 项目代码仓库地址
    7. bugs 项目提交问题的地址
    8. funding 指定项目的资金支持方式和链接

    三、依赖配置

    1. dependencies 生产环境的依赖包
      如果不使用脱字符(^),安装的版本号固定;如果使用,则能安装当前大版本的最新版本,在package-lock.json中可查看当前实际安装的版本。
    2. devDependencies 开发环境的依赖包,例如webpack、vite、babel、ESLint等。
    3. peerDependencies
      对等依赖的作用:
      减小打包体积:例如使用react开发的组件库,安装react是必不可少的,而使用组件库的开发者,本地项目肯定安装了react,因此开发的组件库中不必把react打包进去(期望项目的使用者来提供这些模块的实现)。
      版本一致性:使用你的组件库的开发者需要确保他们项目中安装了与你声明的对等依赖版本兼容的包,以确保组件库正常运行。
      示例:声明要使用组件库,需在项目中安装大于17.0.1版本的react
    4. peerDependenciesMeta
      将对等依赖标记为可选,如果用户没有安装对等依赖,npm不会发出警告
    "peerDependenciesMeta":{
    	"react"{}
    }
    
    • 1
    • 2
    • 3
    1. bundledDependencies
      声明捆绑依赖项(使用情景较少)
    2. optionalDependencies
      声明可选依赖项(使用情景较少)
    3. engines
      声明对npm或node的版本要求
    "engines":{
    	"node"">=8.10.3 <12.13.0",
    	"npm": ">=6.9.0"
    }
    
    • 1
    • 2
    • 3
    • 4

    目前对NPM来说,engines只是起一个说明的作用,即使用户安装的版本不符合要求,也不影响依赖包的安装。但使用pnpm 和 yarn安装,如果版本不符合要求会导致安装失败。
    8. workspaces
    单个代码库中统一管理多个包(monorepo),在workspaces声明目录下的package会软链到根目录的node_modules中。

    1. 初始化项目
    2. 声明本项目是workspaces模式 "private":"true","workspaces":[ "packages/*" ]表示所有子包都在packages文件夹下
    3. 创建子包p1 npm init -w packages/p1 -y在node_modules/.package-lock.json中可以看到 “link”: true 链接符号信息
    4. 新建packages/p1/index.js module.exports="p1包"
    5. 创建子包p2npm init -w packages/p2 -y
    6. 将子包p1添加到p2中npm i p1 -w p2安装,卸载等命令都是一样的,只是多了"–workspace="参数(简写-w),用来指定在哪个包中执行命令
    7. 子包p2使用p1const p1 = require("p1");console.log("使用",p1);module.exports = 'p2包'workspaces功能与lerna类似,如果只需简单地管理多个包,workspaces足够了。lerna具有版本管理,发包提示,简化多包项目发布流程等更多功能。

    四、脚本配置

  • 相关阅读:
    服务器技术(二)--Linux进阶应用(2)--Linux用户与权限及CentOS7防火墙firewall
    Hive企业实战ORC表数据翻倍,颠覆你认知的Cluster by作用?
    深度学习简述
    升级到.NET 6 后突然发现EFCore访问MySQL出现问题-没有 get_QueryProvider实现
    【每日练习】字符串中最长的数字字符串
    三分钟阿里云服务器全方位介绍(看一篇就够了)
    51种企业应用架构模式详解
    Azure OpenAI 服务
    Java中的深拷贝与浅拷贝
    Redis系列三:thinkphp 使用 redis
  • 原文地址:https://blog.csdn.net/formylovetm/article/details/133139030