package.json属性

一、必须属性

  1. name
    定义项目的名称,不能以".“和”_"开头,不能包含大写字母

  2. version
    定义项目的版本号,格式为:大版本号.次版本号.修订号
    这段代码是一个名为 “webpack” 的 npm 模块的 package.json 文件内容,其中包含了该模块的各种信息和配置。

  3. "bin": { "webpack": "bin/webpack.js" }: 这里的含义是指定了在全局安装时链接到 bin/webpack.js 文件的可执行命令为 “webpack”。这使得在项目外部可以直接使用 webpack 命令来调用该模块提供的功能。

  4. "bundleDependencies": false: 这个字段指定了当使用 npm packnpm install 安装模块时,是否将所有依赖打包成一个单独的包。这里设置为 false 表示不会打包依赖。

  5. "dependencies""devDependencies": 分别列出了项目所依赖的生产环境和开发环境的依赖模块,其中指定了每个模块的名称和版本号。

  6. "description": 提供了对该模块的简要描述信息。

  7. "engines": { "node": ">=10.13.0" }: 指定了该模块在运行时所需要的 Node.js 最低版本。

  8. "files": 列出了该模块发布到 npm 上时所包含的文件和目录。

  9. "homepage": 指定了该模块的文档主页。

  10. "funding": 指定了捐赠信息,告诉用户可以通过哪种方式资助该模块。

  11. "lint-staged": 包含了在 Git commit 时需要运行的代码检查工具和配置。

  12. "main": 指定了模块入口文件的路径。

  13. "peerDependenciesMeta": 用来声明对某些 peer 模块的依赖,以及声明这些 peer 模块是可选的。

  14. "types": 指定了 TypeScript 类型定义文件的路径。

  15. "version": 模块的版本号。

这些信息和配置帮助 npm 和开发人员了解了该模块的基本情况、依赖关系,以及提供了一些其他的配置信息。

{
  "bin": {
    "webpack": "bin/webpack.js"
  },
  "bundleDependencies": false,
  "dependencies": {},
  "deprecated": false,
  "description": "Packs ECMAScript/CommonJs/AMD modules for the browser. Allows you to split your codebase into multiple bundles, which can be loaded on demand. Supports loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.",
  "devDependencies": {
    "@babel/core": "^7.23.7",
    "@babel/preset-react": "^7.23.3",
    "@types/glob-to-regexp": "^0.4.4",
    "@types/jest": "^29.5.11",
    "@types/mime-types": "^2.1.4",
    "@types/node": "^20.11.27",
    "assemblyscript": "^0.27.22",
    "babel-loader": "^8.1.0",
    "benchmark": "^2.1.4",
    "bundle-loader": "^0.5.6",
    "coffee-loader": "^1.0.0",
    "coffeescript": "^2.5.1",
    "core-js": "^3.6.5",
    "coveralls": "^3.1.0",
    "cspell": "^8.6.0",
    "css-loader": "^5.0.1",
    "date-fns": "^3.2.0",
    "es5-ext": "^0.10.53",
    "es6-promise-polyfill": "^1.2.0",
    "eslint": "^8.48.0",
    "eslint-config-prettier": "^9.1.0",
    "eslint-plugin-jest": "^27.6.3",
    "eslint-plugin-jsdoc": "^48.1.0",
    "eslint-plugin-n": "^16.6.2",
    "eslint-plugin-prettier": "^5.1.3",
    "file-loader": "^6.0.0",
    "fork-ts-checker-webpack-plugin": "^9.0.2",
    "hash-wasm": "^4.9.0",
    "husky": "^9.0.11",
    "is-ci": "^3.0.0",
    "istanbul": "^0.4.5",
    "jest": "^29.7.0",
    "jest-circus": "^29.7.0",
    "jest-cli": "^29.7.0",
    "jest-diff": "^29.7.0",
    "jest-environment-node": "^29.7.0",
    "jest-junit": "^16.0.0",
    "json-loader": "^0.5.7",
    "json5": "^2.1.3",
    "less": "^4.0.0",
    "less-loader": "^8.0.0",
    "lint-staged": "^15.2.2",
    "lodash": "^4.17.19",
    "lodash-es": "^4.17.15",
    "memfs": "^4.7.7",
    "mini-css-extract-plugin": "^1.6.1",
    "mini-svg-data-uri": "^1.2.3",
    "nyc": "^15.1.0",
    "open-cli": "^8.0.0",
    "prettier": "^3.2.1",
    "prettier-2": "npm:prettier@^2",
    "pretty-format": "^29.5.0",
    "pug": "^3.0.0",
    "pug-loader": "^2.4.0",
    "raw-loader": "^4.0.1",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "rimraf": "^3.0.2",
    "script-loader": "^0.7.2",
    "simple-git": "^3.17.0",
    "strip-ansi": "^6.0.0",
    "style-loader": "^2.0.0",
    "terser": "^5.26.0",
    "toml": "^3.0.0",
    "tooling": "github:webpack/tooling#v1.23.3",
    "ts-loader": "^9.5.1",
    "typescript": "^5.4.2",
    "url-loader": "^4.1.0",
    "wast-loader": "^1.12.1",
    "webassembly-feature": "1.3.0",
    "webpack-cli": "^5.0.1",
    "xxhashjs": "^0.2.2",
    "yamljs": "^0.3.0",
    "yarn-deduplicate": "^6.0.1"
  },
  "engines": {
    "node": ">=10.13.0"
  },
  "files": [
    "lib/",
    "bin/",
    "hot/",
    "schemas/",
    "SECURITY.md",
    "module.d.ts",
    "types.d.ts"
  ],
  "funding": {
    "type": "opencollective",
    "url": "https://opencollective.com/webpack"
  },
  "homepage": "https://github.com/webpack/webpack",
  "lint-staged": {
    "*.{js,cjs,mjs}": [
      "eslint --cache --fix"
    ],
    "*": [
      "prettier --cache --write --ignore-unknown",
      "cspell --cache --no-must-find-files"
    ]
  },
  "main": "lib/index.js",
  "peerDependenciesMeta": {
    "webpack-cli": {
      "optional": true
    }
  },
  "scripts": {},
  "types": "types.d.ts",
  "version": "5.91.0"
}

engines

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值