前端 JS 经典:package.json 属性详解

前言:package.json 里的字段大致分两部分,一部分标准字段,一部分非标字段。标准字段就是官方定义好的字段,非标字段包括作者自定义字段

1. 标准字段

1.1 name

包名,就是我们用 npm 去下载的名字,就定义在这。

{"name": "yqcoder-admin-ts"
}

1.2 version

版本,当前包的版本号

{"version": "0.0.0"
}

1.3 description

描述,描述这个包的主要用途

{"description": "this is a system"
}

1.4 main

入口文件,指定这个包的入口文件,如果不设置默认包根目录的 index.js 文件

{"main": "index.js"
}

1.5 files

指定包开发完成后上传到 npm 的文件。

{"files": ["index.js", "dist"]
}

1.6 repository

包上传后的仓库信息

{"repository": {"type": "git","url": "xxxx/xx/xxx.git","directory": "packages/xxx"}
}

1.7 keywords

npm 上的搜索关键字

{"keywords": ["admin"]
}

1.8 author

包作者

{"author": "Yqcoder"
}

1.9 license

提供开源许可类型

{"license": "MIT"
}

1.10 bugs

提交 issues 地址

{"bugs": "https://github.com/xxx/xxx"
}

1.11 homepage

展示一些官网首页

{"homepage": "https://github.com/xxxx"
}

1.12 dependencies

生产环境下需要用到的依赖

{"dependencies": {"@amap/amap-jsapi-loader": "^1.0.1"}
}

1.13 devDependencies

开发阶段时需要的依赖包,不需要在生产中使用

{"devDependencies": {"sass": "^1.70.0"}
}

1.14 scripts

终端脚本语言

{"scripts": {"dev": "vite","build": "vue-tsc && vite build","preview": "vite preview"}
}

2. 非标字段

2.1 module

给构建工具看的,在使用构建工具的情况下,去导入一个包,特别是使用 ESM 模块方法的时候,会把 module 设置的文件给你

{"module": "dist/xxxx.esm-bundler.js"
}

2.2 types

给 ts 看的,整个包的类型定义文件

{"types": "dist/xxx.d.ts"
}

2.3 unpkg

给 cdn 看的,有些用户导入包的时候会使用 CDN,在用这种方式导入的时候,CDN 会从 npm 上去下载相应的文件,从哪里下载?就从这个文件路径下载。

{"unpkg": "dist/xxx.global.js"
}

2.4 jsdelivr

给 cdn 看的

{"jsdelivr": "dist/xxx.global.js"
}

2.5 exports

给构架工具看的,在构建工具的环境中,你在导入包的时候有很多方式。

{"exports": {".": {"types": "./dist/xxxx.d.ts"},"./*": "./*"}
}

2.6 sideEffects

给构建工具看的,标识下包有没有副作用

{"sideEffects": false
}

2.7 buildOptions

作者自定义,提供一些 rollup 的打包信息的。

{"buildOptions": {"name": "xxxx","formats": ["esm-bunder"]}
}

3. vue 中的 package.json 文件

{"name": "vue","version": "2.7.16","packageManager": "pnpm@8.9.2","description": "Reactive, component-oriented view layer for modern web interfaces.","main": "dist/vue.runtime.common.js","module": "dist/vue.runtime.esm.js","unpkg": "dist/vue.js","jsdelivr": "dist/vue.js","typings": "types/index.d.ts","files": ["src","dist/*.js","dist/*.mjs","types/*.d.ts","compiler-sfc","packages/compiler-sfc"],"exports": {".": {"types": "./types/index.d.ts","import": {"node": "./dist/vue.runtime.mjs","default": "./dist/vue.runtime.esm.js"},"require": "./dist/vue.runtime.common.js"},"./compiler-sfc": {"types": "./compiler-sfc/index.d.ts","import": "./compiler-sfc/index.mjs","require": "./compiler-sfc/index.js"},"./dist/*": "./dist/*","./types/*": ["./types/*.d.ts", "./types/*"],"./package.json": "./package.json"},"sideEffects": false,"scripts": {"dev": "rollup -w -c scripts/config.js --environment TARGET:full-dev","dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:runtime-cjs-dev","dev:esm": "rollup -w -c scripts/config.js --environment TARGET:runtime-esm","dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:server-renderer","dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:compiler ","build": "node scripts/build.js","build:ssr": "npm run build -- runtime-cjs,server-renderer","build:types": "rimraf temp && tsc --declaration --emitDeclarationOnly --outDir temp && api-extractor run && api-extractor run -c packages/compiler-sfc/api-extractor.json","test": "npm run ts-check && npm run test:types && npm run test:unit && npm run test:e2e && npm run test:ssr && npm run test:sfc","test:unit": "vitest run test/unit","test:ssr": "npm run build:ssr && vitest run server-renderer","test:sfc": "vitest run compiler-sfc","test:e2e": "npm run build -- full-prod,server-renderer-basic && vitest run test/e2e","test:transition": "karma start test/transition/karma.conf.js","test:types": "npm run build:types && tsc -p ./types/tsconfig.json","format": "prettier --write --parser typescript \"(src|test|packages|types)/**/*.ts\"","ts-check": "tsc -p tsconfig.json --noEmit","ts-check:test": "tsc -p test/tsconfig.json --noEmit","bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js","release": "node scripts/release.js","changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"},"gitHooks": {"pre-commit": "lint-staged","commit-msg": "node scripts/verify-commit-msg.js"},"lint-staged": {"*.js": ["prettier --write"],"*.ts": ["prettier --parser=typescript --write"]},"repository": {"type": "git","url": "git+https://github.com/vuejs/vue.git"},"keywords": ["vue"],"author": "Evan You","license": "MIT","bugs": {"url": "https://github.com/vuejs/vue/issues"},"homepage": "https://github.com/vuejs/vue#readme","dependencies": {"@vue/compiler-sfc": "workspace:*","csstype": "^3.1.0"},"devDependencies": {"@babel/parser": "^7.23.5","@microsoft/api-extractor": "^7.25.0","@rollup/plugin-alias": "^3.1.9","@rollup/plugin-commonjs": "^22.0.0","@rollup/plugin-node-resolve": "^13.3.0","@rollup/plugin-replace": "^4.0.0","@types/he": "^1.1.2","@types/node": "^20.10.3","chalk": "^4.1.2","conventional-changelog-cli": "^2.2.2","cross-spawn": "^7.0.3","enquirer": "^2.3.6","esbuild": "^0.19.8","execa": "^4.1.0","he": "^1.2.0","jasmine-core": "^4.2.0","jsdom": "^19.0.0","karma": "^6.3.20","karma-chrome-launcher": "^3.1.1","karma-cli": "^2.0.0","karma-esbuild": "^2.2.5","karma-jasmine": "^5.0.1","lint-staged": "^12.5.0","lodash": "^4.17.21","marked": "^4.0.16","minimist": "^1.2.6","postcss": "^8.4.14","prettier": "^2.6.2","puppeteer": "^14.3.0","rimraf": "^3.0.2","rollup": "^2.79.1","rollup-plugin-typescript2": "^0.32.0","semver": "^7.3.7","shelljs": "^0.8.5","terser": "^5.14.0","todomvc-app-css": "^2.4.2","ts-node": "^10.8.1","tslib": "^2.4.0","typescript": "^4.8.4","vitest": "^1.0.4","yorkie": "^2.0.0"}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue页面和 iframe多页面无刷新方案和并行存在解决方案

面临问题 : back的后台以jsp嵌套iframe为主, 所以在前端框架要把iframe无刷新嵌套和vue页面进行并行使用,vue的keep-alive只能对虚拟dom树 vtree 进行缓存无法缓存iframe,所以要对iframe进行处理 tab标签的切换效果具体参考若依框架的tab切换,可以去若依看源码,若依源码没有实…

DES文件加密解密(增强版)

1.引入hutool-all的maven依赖 <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.28</version> </depend…

C++设计模式——Proxy代理模式

一&#xff0c;代理模式简介 代理模式是一种 结构型设计模式&#xff0c;该模式通过引入一个新的代理对象Proxy&#xff0c;来间接访问原始对象&#xff0c;从而使访问方式变得灵活和可控。 代理对象的设定减少了客户端与真实对象之间的直接交互。 通过引入代理对象来间接访问原…

农资投入品系统架构:数字化农业的技术支撑与创新

在当今数字化时代&#xff0c;农业领域也在迅速迈向数字化和智能化的新阶段。农资投入品系统作为农业生产的重要支撑&#xff0c;其系统架构的设计与创新对于提高农业生产效率、保障粮食安全具有重要意义。本文将探讨农资投入品系统架构的设计原则、核心模块以及未来发展趋势。…

OrangePi AIpro测评:性能、应用与开发者体验解析

一、OrangePi AIpro介绍 OrangePi AIpro(8T)采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;集成图形处理器&#xff0c;支持8TOPS AI算力&#xff0c;拥有8GB/16GB LPDDR4X&#xff0c;可以外接32GB/64GB/128GB/256GB eMMC模块&#xff0c;支持双4K高…

AI虚拟试穿技术:开启高保真、多场景、多样化服装组合的试穿应用

随着电子商务的快速发展,消费者对于在线购物体验的要求越来越高。特别是在服装领域,消费者渴望能够在购买前直观地了解服装的试穿效果。传统的虚拟试穿技术虽然已有一定的发展,但在不同场景下的高保真度和鲁棒性方面仍面临挑战。为此,我们研发了一种全新的AI虚拟试穿技术,…

StarkNet架构之L1-L2消息传递机制

文章目录 StarkNet架构之L1-L2消息传递机制L2 → L1消息L2 → L1消息结构L2 → L1消息哈希L1 → L2消息L1 → L2消息取消L1 → L2报文费用L1 → L2哈希额外资源StarkNet架构之L1-L2消息传递机制 原文地址:https://docs.starknet.io/architecture-and-concepts/network-archit…

2.spring cloud gateway 源码编译

spring cloud gateway编译 1.编译 命令 mvn clean compile -U2.报错 报错信息 核心信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (checkstyle-validation) on project spring-cloud-gateway-mvc: Failed during …

【分布式技术专题】「OceanBase深度解析」 探索OceanBase产品矩阵与核心设计

探索OceanBase产品矩阵与核心设计 OceanBase的六大特性高扩展高可用多租户&#xff08;资源隔离&#xff09;OceanBase架构和功能OceanBase广泛的数据源支持 OceanBase的六大特性 OceanBase以其卓越的产品平台整合方案&#xff0c;充分展现了六大核心特性的卓越与全面。这一方…

深入解析 Google Cloud Platform (GCP) 负载均衡:全面指南

目录 概述 GCP 负载均衡的类型 HTTP(S) 负载均衡 TCP/SSL 代理负载均衡 内部 HTTP(S) 负载均衡 内部 TCP/UDP 负载均衡 网络 TCP/UDP 负载均衡 配置 GCP 负载均衡 步骤 1:创建后端服务 步骤 2:配置 URL 地图和目标 HTTP 代理 步骤 3:配置全局转发规则 步骤 4:验…

C++ | Leetcode C++题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; class Solution { public:int evalRPN(vector<string>& tokens) {int n tokens.size();vector<int> stk((n 1) / 2);int index -1;for (int i 0; i < n; i) {string& token tokens[i];if (token.length() >…

人工智能将成为数学家的“副驾驶”

人工智能将成为数学家的“副驾驶” 数学传统上是一门独立的科学。1986年&#xff0c;安德鲁怀尔斯为了证明费马定理&#xff0c;退到书房里呆了7年。由此产生的证明往往很难让同事们理解&#xff0c;有些至今仍有争议。但近年来&#xff0c;越来越多的数学领域被严格地分解为各…

winhttp劫持dll

转发类 #include "pch.h" #include "WinHttpForward.h"void WinHttpForward::InitWinHttpForward() {HMODULE hValve LoadLibrary(L"winhttp.dll");//导入系统路径下的if (GetLastError() ! ERROR_MOD_NOT_FOUND && hValve ! NULL) {G…

如何手动实现multiSetIfAbsent、multiExpire

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,目前工作于上海某电商服务公司…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正!共同进步,共同成长✊”); 🌟System.out.println(“💡如果文章对您有所帮助,希望您可以三…

Django-filter

准备工作 首先&#xff0c;确保你已经安装了django-filter包。如果没有&#xff0c;请使用以下命令安装&#xff1a; pip install django-filter然后&#xff0c;在你的settings.py文件中添加django_filters到INSTALLED_APPS列表中&#xff1a; INSTALLED_APPS [# ...djang…

深入解析JVM之类的生命周期

在线工具站 推荐一个程序员在线工具站&#xff1a;程序员常用工具&#xff08;http://cxytools.com&#xff09;&#xff0c;有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具&#xff0c;效率加倍嘎嘎好用。 程序员资料站 推荐一个程序员编程资料站&#xff1a;…

Linux 性能优化实战

Linux 性能优化实战原文链接&#xff1a;https://time.geekbang.org/column/intro/100020901?tabcatalog 33 | 关于 Linux 网络&#xff0c;你必须知道这些&#xff08;上&#xff09;设计高并发架构有哪些策略&#xff1f;如何理解云计算&#xff1f;如何理解TCP/IP 四层模型…

洛谷P3269 [JLOI2016] 字符串覆盖

题目描述 字符串A有N个子串B1,B2,...,Bn。如果将这n个子串分别放在恰好一个它在A中出现的位置上&#xff08;子串之间可以重叠&#xff09;这样A中的若干字符就被这N个子串覆盖了。问A中能被覆盖字符个数的最小值和最大值。 输入格式 第一行包含一个正整数T&#xff0c;表示…

Selenium入门之环境搭建

搭建 Selenium 环境主要包括以下几个步骤&#xff1a; 安装 Python 和相关包安装 WebDriver编写和运行 Selenium 脚本 1. 安装 Python 和相关包 首先确保你已经安装了 Python。如果没有安装&#xff0c;可以从 Python 官方网站下载并安装。 然后&#xff0c;使用 pip 安装 …

2024年大数据、区块链与物联网国际会议(ICBDBLT 2024)

2024 International Conference on Big Data, Blockchain, and Internet of Things 【1】大会信息 会议简称&#xff1a;ICBDBLT 2024 大会地点&#xff1a;中国青岛 审稿通知&#xff1a;投稿后2-3日内通知 会议官网&#xff1a;www.icbdblt.com 【2】会议简介 即将召开的…