本文介绍: 安装 lowcodeplatform/demogeneral 的依赖时候 出现一个报错如下这个问题 情况还有点特别, 当时是在 我本地机器 能够正常的 安装依赖, 但是在同事的机器上面 安装不成功其中曲折较多, 这里只提及 最直接的定位问题流程报错信息如下

前言

安装 lowcodeplatform/demogeneral 的依赖时候 出现一个报错如下

这个问题 情况还有点特别, 当时是在 我本地机器 能够正常的 安装依赖, 但是在同事的机器上面 安装不成功

其中曲折较多, 这里只提及 最直接的定位问题流程

报错信息如下 

6069 silly fetchPackageMetaData error for antd@^4.21.4 sha512-ufylF1APBc4d1g+6WOZMLyFWlzhFK0T+Z3bU0aKgpWngU7n/MyTZ2mvHldPSFfDA78BudXH+fIKmwSYqbXevGg== integrity checksum failed when using sha512: wanted sha512-ufylF1APBc4d1g+6WOZMLyFWlzhFK0T+Z3bU0aKgpWngU7n/MyTZ2mvHldPSFfDA78BudXH+fIKmwSYqbXevGg== but got sha512-wrNy2Hi27uM3948okG3n2GwzQKBFUn1Qn5mn2I/ALcR28rC6cTjHYOuA248Zl9ECzz3jo4TY2R0SIa+5GZ/zGA==. (8767340 bytes)
6073 verbose stack Error: sha512-ufylF1APBc4d1g+6WOZMLyFWlzhFK0T+Z3bU0aKgpWngU7n/MyTZ2mvHldPSFfDA78BudXH+fIKmwSYqbXevGg== integrity checksum failed when using sha512: wanted sha512-ufylF1APBc4d1g+6WOZMLyFWlzhFK0T+Z3bU0aKgpWngU7n/MyTZ2mvHldPSFfDA78BudXH+fIKmwSYqbXevGg== but got sha512-wrNy2Hi27uM3948okG3n2GwzQKBFUn1Qn5mn2I/ALcR28rC6cTjHYOuA248Zl9ECzz3jo4TY2R0SIa+5GZ/zGA==. (8767340 bytes)
6073 verbose stack     at Transform.<anonymous> (D:ProgramFilesnodejsnode_modulesnpmnode_modulesssriindex.js:340:19)
6073 verbose stack     at Transform.emit (events.js:327:22)
6073 verbose stack     at endReadableNT (internal/streams/readable.js:1327:12)
6073 verbose stack     at processTicksAndRejections (internal/process/task_queues.js:80:21)
6074 verbose cwd D:WebstormWorkStationslowcode-platformdemo-general

问题的分析

从上面日志可以看出 期望摘要为 “ufylF1APBc4d1g”, 但是实际上根据 从 nexus 拉取的包计算出来的摘要为 “wrNy2Hi27uM3948okG3n2GwzQKBFUn1Qn5mn2I”

首先 从 nexus 上面下载一下 antd-4.24.8.tgz 文件然后 计算一下它的 sha512 摘要

然后对比一下 nexus 上面计算的摘要, 发现 二者是能够对上的, 但是 npm 却期望的是 “ufylF1APBc4d1g”, 那么这个摘要又是从哪里来的呢? 

接下来是一系列 npm 相关代码跟踪 

ssri/index.js.integrityStream 中根据 ops.integrity 打上断点, 包含 "ufylF1APBc4d1g", 像上面追溯make-fetch-happen/index.js.remoteFetch:337 行可以看到 请求的是 http://10.30.2.18:8081/repository/npm-public/antd/-/antd-4.24.8.tgz
integrity 来自于的是 上下文的 ops, 接着 在 make-fetch-happen/index.js.remoteFetch 中条件断点
make-fetch-happen/index.js.cachingFetch
npm-registry-fetch/index.js.regFetch
fetchers/registry/tarball.js.fromManifest 这里integrity "ufylF1APBc4d1g" 是从这里传下去的, 来自于 manifest._integrity
pacote/lib/finalize-manifest.js.finalizeManifest 继续往上
pacote/lib/fetchers/registry/manifest.js.annotateManifest 中将 manifest._integrity 设置为 manifest.dist.integrity
npm-pick-manifest/index.js.pickManifest 中从 packument 中获取 4.24.8 版本的元数据, 中拿到的摘要为 "ufylF1APBc4d1g"

pacote/lib/fetchers/registry/packument.js.fetchPackument 中是向 http://10.30.2.18:8081/repository/npm-public/antd 发送请求, 获取元数据, 这里拿到的 integrity 是 "ufylF1APBc4d1g"

 http://10.30.2.18:8081/repository/npm-public/antd 的响应如下 http://10.30.2.18:8081/repository/npm-public/antd

pacote/lib/fetchers/registry/manifest.js.annotateManifest 中获取摘要, 优先获取的是 integrity, 其次获取的 shasum 

ssri/index.js.integrityStream 的相关代码演示

这里可以看到  sri 是调用传递下来的, 根据上面的堆栈信息可以得到是从 nexus访问接口拿到 

newSri 是通过拿到的 tgz 文件计算得到的, 在 npm 6.14.11 中是将文件分成了多个 chunk计算 sha512, 但是对于整体计算结果影响 

pacote/lib/fetchers/registry/packument.js.fetchPackument 的相关代码演示

url http://10.30.2.18:8081/repository/npmpublic/antd 发送请求, 并封装 packument 

uri计算方式如下 

所以 大致推演一下问题 

之前谁上传了 版本01 的 antd-4.24.8.tgz “携带”的有 dist.integrity, 然后 后面我们上传了一个版本02 的 antd-4.24.8.tgz, 这两个文件内容不完全相同 

我们这边通过 npmpublish.sh 上传依赖没有”携带” dist.integrity, 不会更新 http://10.30.2.18:8081/repository/npm-public/antd 中的 dist.integrity

所以 出现的情况就是 http://10.30.2.18:8081/repository/npm-public/antd 中的 dist.integrity 的 sha512 摘要 和 版本02 的 antd-4.24.8.tgz 的 sha512 摘要匹配不上

进而 出现了 最开头的 npm 报出的错误 “integrity checksum failed when using sha512”

解决方式

删除仓库中的 antd 相关, 然后重新上传 antd-4.24.8.tgz 即可 

“integrity checksum failed比较的双方, 一方是 ” http://10.30.2.18:8081/repository/npm-public/antd” 中的 dist.integrity, 另外一方是下载依赖文件的相应算法的摘要[这里的例子中是 sha512]

 我本地机器 能够正常的 安装依赖? 同事的机器却不能?

这主要是 我本地 npm-cache 目录缓存过 该 摘要为 “ufylF1APBc4d1g” 的 antd-4.24.8.tgz

通过调整 npm 代码, 拿到 npm 获取到的 antd-4.24.8.tgz 包 

这就是 为什么本地能够安装通过的原因了, 该包的 sha512 和 nexus存储的 integrity 摘要一致 

如何计算 sha512 ?

java 相关 api 很多, 不多赘述 

通过 js 相关 api 计算文件的 sha512

之所以 又写了一个 js 的版本, 主要是 更加真实的还原 npm 计算摘要的过程 

另外 npm 中将文件分成多个 chunk 来计算的方式, 这里不赘述, 效果是相同的 

npm 本地缓存在哪里? 

两个文件的差异

首先是文件大小 有两百k的差异  

然后两个压缩包 解压之后 对比一下, 只有 package.json 存在差异, 差异内容如下 

所以 估计应该两个从不同仓库里面下载的 依赖压缩包吧 

出现问题的 http://10.30.2.18:8081/repository/npm-public/antd 的响应 

{
  "_id": "antd",
  "keywords": [
    "ant",
    "component",
    "components",
    "design",
    "framework",
    "frontend",
    "react",
    "react-component",
    "ui"
  ],
  "dist-tags": {
    "latest": "4.24.8"
  },
  "description": "An enterprise-class UI design language and React components implementation",
  "readme": "",
  "repository": {
    "type": "git",
    "url": "https://github.com/ant-design/ant-design"
  },
  "users": {},
  "bugs": "https://github.com/ant-design/ant-design/issues",
  "license": "MIT",
  "versions": {
    "4.24.8": {
      "license": "MIT",
      "devDependencies": {
        "@types/jest-environment-puppeteer": "^5.0.0",
        "react-dom": "^17.0.0",
        "remark-cli": "^11.0.0",
        "react-color": "^2.17.3",
        "@testing-library/react": "^12.0.0",
        "@types/jquery": "^3.5.14",
        "husky": "^8.0.1",
        "react-highlight-words": "^0.18.0",
        "eslint-plugin-jsx-a11y": "^6.2.1",
        "react-sticky": "^6.0.3",
        "css-minimizer-webpack-plugin": "^1.3.0",
        "bisheng-plugin-description": "^0.1.4",
        "react": "^17.0.0",
        "@types/react-sticky": "^6.0.4",
        "cheerio": "1.0.0-rc.12",
        "@ant-design/bisheng-plugin": "^3.3.0-alpha.4",
        "react-helmet-async": "~1.3.0",
        "stylelint-order": "^5.0.0",
        "mini-css-extract-plugin": "^1.6.2",
        "pretty-format": "^29.0.0",
        "http-server": "^14.0.0",
        "@types/puppeteer": "^7.0.4",
        "concurrently": "^7.0.0",
        "eslint-plugin-jest": "^27.0.1",
        "full-icu": "^1.3.0",
        "rc-tween-one": "^3.0.3",
        "remark-lint": "^9.0.0",
        "qs": "^6.10.1",
        "@types/jest-axe": "^3.5.3",
        "jest-image-snapshot": "^6.0.0",
        "jsonml.js": "^0.1.0",
        "@types/react-window": "^1.8.2",
        "@types/warning": "^3.0.0",
        "scrollama": "^3.0.0",
        "array-move": "^4.0.0",
        "@typescript-eslint/parser": "^5.40.0",
        "fetch-jsonp": "^1.1.3",
        "react-dnd": "^16.0.0",
        "rc-virtual-list": "^3.4.11",
        "@ant-design/tools": "^15.1.2",
        "jest-puppeteer": "^6.0.0",
        "react-resizable": "^3.0.1",
        "react-intl": "^6.0.1",
        "glob": "^8.0.1",
        "eslint-config-airbnb": "^19.0.0",
        "@types/react-color": "^3.0.1",
        "duplicate-package-checker-webpack-plugin": "^3.0.0",
        "lz-string": "^1.4.4",
        "react-draggable": "^4.4.3",
        "eslint": "^8.0.0",
        "jsdom": "^20.0.0",
        "@types/react-resizable": "^3.0.0",
        "bisheng": "^3.7.0-alpha.4",
        "@types/lodash": "^4.14.139",
        "jest-axe": "^7.0.0",
        "typescript": "~4.9.3",
        "bisheng-plugin-toc": "^0.4.4",
        "dekko": "^0.2.1",
        "lint-staged": "^13.0.3",
        "@types/qs": "^6.9.7",
        "less-vars-to-js": "^1.3.0",
        "react-dnd-html5-backend": "^16.0.0",
        "@qixian.cs/github-contributors-list": "^1.0.3",
        "eslint-plugin-babel": "^5.3.0",
        "prettier": "^2.3.2",
        "antd": "4.x",
        "webpack-bundle-analyzer": "^4.1.0",
        "eslint-plugin-unicorn": "^44.0.0",
        "bundlesize2": "^0.0.31",
        "theme-switcher": "^1.0.2",
        "react-copy-to-clipboard": "^5.0.1",
        "open": "^8.0.1",
        "enquire-js": "^0.2.1",
        "stylelint-config-standard": "^29.0.0",
        "jest-environment-jsdom": "^29.0.1",
        "mockdate": "^3.0.0",
        "remark-preset-lint-recommended": "^6.0.0",
        "react-fast-marquee": "^1.2.1",
        "@types/gtag.js": "^0.0.12",
        "stylelint": "^14.9.0",
        "@size-limit/file": "^8.0.0",
        "semver": "^7.3.5",
        "jest-environment-node": "^29.0.0",
        "bisheng-plugin-react": "^1.2.0",
        "rome": "^10.0.1",
        "inquirer": "^9.1.2",
        "stylelint-config-prettier": "^9.0.2",
        "@stackblitz/sdk": "^1.3.0",
        "fs-extra": "^10.0.0",
        "docsearch-react-fork": "^0.0.0-alpha.0",
        "simple-git": "^3.0.0",
        "eslint-plugin-react-hooks": "^4.1.2",
        "react-infinite-scroll-component": "^6.1.0",
        "@types/react": "^18.0.0",
        "chalk": "^4.0.0",
        "@docsearch/css": "^3.0.0",
        "xhr-mock": "^2.4.1",
        "react-sortable-hoc": "^2.0.0",
        "increase-memory-limit": "^1.0.7",
        "rimraf": "^3.0.0",
        "eslint-config-prettier": "^8.0.0",
        "stylelint-declaration-block-no-ignored-properties": "^2.1.0",
        "yaml-front-matter": "^4.0.0",
        "@ant-design/hitu": "^0.0.0-alpha.13",
        "@types/jest-image-snapshot": "^5.1.0",
        "remark": "^14.0.1",
        "isomorphic-fetch": "^3.0.0",
        "prettier-plugin-jsdoc": "^0.4.2",
        "immer": "^9.0.1",
        "remove-files-webpack-plugin": "1.5.0",
        "jquery": "^3.4.1",
        "size-limit": "^8.0.0",
        "@types/react-dom": "^18.0.0",
        "eslint-plugin-compat": "~4.0.0",
        "rc-footer": "^0.6.6",
        "react-window": "^1.8.5",
        "fast-glob": "^3.2.11",
        "identity-obj-proxy": "^3.0.0",
        "eslint-plugin-import": "^2.21.1",
        "intersection-observer": "^0.12.0",
        "@types/jest": "^29.0.0",
        "cross-env": "^7.0.0",
        "@testing-library/jest-dom": "^5.16.3",
        "eslint-plugin-markdown": "^3.0.0",
        "eslint-plugin-react": "^7.31.8",
        "esbuild-loader": "^2.13.1",
        "docsearch.js": "^2.6.3",
        "@types/react-copy-to-clipboard": "^5.0.0",
        "antd-img-crop": "^4.2.8",
        "immutability-helper": "^3.0.0",
        "@typescript-eslint/eslint-plugin": "^5.40.0",
        "jest": "^29.4.1",
        "react-github-button": "^0.1.11",
        "react-router-dom": "^6.0.2",
        "babel-plugin-add-react-displayname": "^0.0.5",
        "@testing-library/user-event": "^14.4.2",
        "@types/react-highlight-words": "^0.16.4",
        "stylelint-config-rational-order": "^0.1.2"
      },
      "peerDependencies": {
        "react-dom": ">=16.9.0",
        "react": ">=16.9.0"
      },
      "name": "antd",
      "dist": {
        "tarball": "http://10.30.2.18:8081/repository/npm-public/antd/-/antd-4.24.8.tgz",
        "shasum": "22f34de6857556868780dfa5fe7b374b0b71b517",
        "integrity": "sha512-ufylF1APBc4d1g+6WOZMLyFWlzhFK0T+Z3bU0aKgpWngU7n/MyTZ2mvHldPSFfDA78BudXH+fIKmwSYqbXevGg=="
      },
      "description": "An enterprise-class UI design language and React components implementation",
      "main": "lib/index.js",
      "_id": "antd@4.24.8",
      "contributors": [
        "ant"
      ],
      "version": "4.24.8",
      "dependencies": {
        "@ctrl/tinycolor": "^3.4.0",
        "lodash": "^4.17.21",
        "rc-dialog": "~9.0.2",
        "@ant-design/icons": "^4.7.0",
        "rc-field-form": "~1.27.0",
        "rc-motion": "^2.6.1",
        "rc-resize-observer": "^1.2.0",
        "moment": "^2.29.2",
        "rc-trigger": "^5.2.10",
        "rc-collapse": "~3.4.2",
        "rc-switch": "~3.2.0",
        "rc-drawer": "~6.1.0",
        "rc-progress": "~3.4.1",
        "rc-upload": "~4.3.0",
        "rc-menu": "~9.8.0",
        "rc-rate": "~2.9.0",
        "rc-segmented": "~2.1.0",
        "rc-slider": "~10.0.0",
        "rc-table": "~7.26.0",
        "rc-tree": "~5.7.0",
        "rc-select": "~14.1.13",
        "rc-mentions": "~1.13.1",
        "@ant-design/colors": "^6.0.0",
        "rc-tree-select": "~5.5.0",
        "copy-to-clipboard": "^3.2.0",
        "@ant-design/react-slick": "~0.29.1",
        "rc-dropdown": "~4.0.0",
        "rc-steps": "~5.0.0-alpha.2",
        "@babel/runtime": "^7.18.3",
        "rc-tooltip": "~5.2.0",
        "rc-image": "~5.13.0",
        "classnames": "^2.2.6",
        "rc-input-number": "~7.3.9",
        "rc-cascader": "~3.7.0",
        "rc-pagination": "~3.2.0",
        "rc-textarea": "~0.4.5",
        "rc-picker": "~2.7.0",
        "scroll-into-view-if-needed": "^2.2.25",
        "rc-util": "^5.22.5",
        "rc-input": "~0.1.4",
        "rc-notification": "~4.6.0",
        "rc-tabs": "~12.5.6",
        "rc-checkbox": "~2.3.0"
      },
      "title": "Ant Design",
      "keywords": [
        "ant",
        "component",
        "components",
        "design",
        "framework",
        "frontend",
        "react",
        "react-component",
        "ui"
      ],
      "files": [
        "dist",
        "lib",
        "es"
      ],
      "sideEffects": [
        "dist/*",
        "es/**/style/*",
        "lib/**/style/*",
        "*.less"
      ],
      "module": "es/index.js",
      "unpkg": "dist/antd.min.js",
      "typings": "lib/index.d.ts",
      "scripts": {
        "prepare": "husky install",
        "api-collection": "antd-tools run api-collection",
        "authors": "node ./scripts/generate-authors",
        "build": "npm run compile &amp;&amp; NODE_OPTIONS='--max-old-space-size=4096' npm run dist",
        "bundlesize": "bundlesize --enable-github-checks",
        "size-limit": "size-limit",
        "check-commit": "node ./scripts/check-commit",
        "check-ts-demo": "node ./scripts/check-ts-demo",
        "clean": "antd-tools run clean &amp;&amp; rm -rf es lib coverage dist report.html",
        "clean-lockfiles": "rm -rf package-lock.json yarn.lock",
        "prestart": "npm run version",
        "precompile": "npm run version",
        "pretest": "npm run version",
        "predist": "npm run version",
        "presite": "npm run version",
        "compile": "npm run clean &amp;&amp; antd-tools run compile",
        "changelog": "node ./scripts/print-changelog",
        "predeploy": "antd-tools run clean &amp;&amp; npm run site &amp;&amp; cp CNAME _site &amp;&amp; npm run site:test",
        "deploy": "gh-pages -d _site -r git@github.com:ant-design/4x.ant.design.git -b gh-pages",
        "deploy:china-mirror": "git checkout gh-pages &amp;&amp; git pull origin gh-pages && git push git@gitee.com:ant-design/ant-design.git gh-pages",
        "dist": "antd-tools run dist",
        "dist:esbuild": "ESBUILD=true npm run dist",
        "dist:esbuild-no-dup-check": "ESBUILD=true NO_DUP_CHECK=true npm run dist",
        "lint": "npm run tsc && npm run lint:script && npm run lint:demo && npm run lint:style && npm run lint:deps && npm run lint:md",
        "lint-fix": "npm run lint-fix:script && npm run lint-fix:demo && npm run lint-fix:style",
        "lint-fix:demo": "npm run lint:demo -- --fix",
        "lint-fix:script": "npm run lint:script -- --fix",
        "lint-fix:style": "npm run lint:style -- --fix",
        "lint:demo": "eslint components/*/demo/*.md",
        "lint:deps": "antd-tools run deps-lint",
        "lint:md": "remark . -f -q",
        "lint:script": "eslint . --ext .js,.jsx,.ts,.tsx",
        "lint:style": "stylelint '{site,components}/**/*.less'",
        "pre-publish": "npm run test-all -- --skip-build",
        "prettier": "prettier -c --write **/*",
        "rome:format": "rome format --write .",
        "pub": "npm run version && antd-tools run pub",
        "prepublishOnly": "antd-tools run guard",
        "postpublish": "node ./scripts/post-script.js",
        "site:theme": "npm run site:theme-dark && npm run site:theme-compact",
        "site:theme-dark": "cross-env ESBUILD=1 ANT_THEME=dark bisheng build -c ./site/bisheng.config.js",
        "site:theme-compact": "cross-env ESBUILD=1 ANT_THEME=compact bisheng build -c ./site/bisheng.config.js",
        "site": "npm run site:theme && cross-env NODE_ICU_DATA=node_modules/full-icu ESBUILD=1 bisheng build --ssr -c ./site/bisheng.config.js",
        "sort": "npx sort-package-json",
        "sort-api": "antd-tools run sort-api-table",
        "start": "antd-tools run clean && cross-env NODE_ENV=development concurrently "bisheng start -c ./site/bisheng.config.js"",
        "test": "jest --config .jest.js --cache=false",
        "test:update": "jest --config .jest.js --cache=false -u",
        "test-all": "sh -e ./scripts/test-all.sh",
        "test-node": "jest --config .jest.node.js --cache=false",
        "tsc": "tsc --noEmit",
        "site:test": "jest --config .jest.site.js --cache=false --force-exit",
        "test-image": "jest --config .jest.image.js --no-cache -i -u",
        "argos": "node ./scripts/argos-upload.js",
        "version": "node ./scripts/generate-version",
        "install-react-16": "npm i --no-save --legacy-peer-deps react@16 react-dom@16",
        "install-react-17": "npm i --no-save --legacy-peer-deps react@17 react-dom@17",
        "install-react-18": "npm i --no-save --legacy-peer-deps react@18 react-dom@18 @testing-library/react@13",
        "fix-memory-limit": "cross-env LIMIT=10240 increase-memory-limit"
      },
      "browserslist": [
        "> 0.5%",
        "last 2 versions",
        "Firefox ESR",
        "not dead",
        "IE 11",
        "not IE 10"
      ],
      "size-limit": [
        {
          "path": "./dist/antd.min.js",
          "limit": "285 KiB"
        },
        {
          "path": "./dist/antd.min.css",
          "limit": "70 KiB"
        },
        {
          "path": "./dist/antd.dark.min.css",
          "limit": "70 KiB"
        },
        {
          "path": "./dist/antd.compact.min.css",
          "limit": "70 KiB"
        },
        {
          "path": "./dist/antd.variable.min.css",
          "limit": "70 KiB"
        }
      ],
      "bundlesize": [
        {
          "path": "./dist/antd.min.js",
          "maxSize": "285 kB"
        },
        {
          "path": "./dist/antd.min.css",
          "maxSize": "70 kB"
        },
        {
          "path": "./dist/antd.dark.min.css",
          "maxSize": "70 kB"
        },
        {
          "path": "./dist/antd.compact.min.css",
          "maxSize": "70 kB"
        },
        {
          "path": "./dist/antd.variable.min.css",
          "maxSize": "70 kB"
        }
      ],
      "tnpm": {
        "mode": "npm"
      },
      "lint-staged": {
        "*.{ts,tsx,js}": "rome format --write",
        "*.{json,less,md}": "prettier --ignore-unknown --write"
      },
      "_resolved": "",
      "_integrity": "",
      "_from": "file:E:/npmPublish/tarballs/antd/antd-4.24.8.tgz",
      "readme": "",
      "readmeFilename": "README.md",
      "_nodeVersion": "14.17.0",
      "_npmVersion": "6.14.13"
    }
  },
  "name": "antd",
  "time": {
    "created": "2023-02-21T08:15:46.443Z",
    "modified": "2023-02-21T09:07:05.915Z",
    "4.24.8": "2023-02-21T08:15:46.443Z"
  },
  "contributors": [
    "ant"
  ],
  "homepage": "https://ant.design"
}

 处理之后的 http://10.30.2.18:8081/repository/npm-public/antd 的响应 

{
  "_id": "antd",
  "keywords": [
    "ant",
    "component",
    "components",
    "design",
    "framework",
    "frontend",
    "react",
    "react-component",
    "ui"
  ],
  "dist-tags": {
    "latest": "4.24.8"
  },
  "description": "An enterprise-class UI design language and React components implementation",
  "repository": {
    "type": "git",
    "url": "https://github.com/ant-design/ant-design"
  },
  "users": {},
  "bugs": "https://github.com/ant-design/ant-design/issues",
  "license": "MIT",
  "versions": {
    "4.24.8": {
      "license": "MIT",
      "devDependencies": {
        "@types/jest-environment-puppeteer": "^5.0.0",
        "react-dom": "^17.0.0",
        "remark-cli": "^11.0.0",
        "react-color": "^2.17.3",
        "@testing-library/react": "^12.0.0",
        "@types/jquery": "^3.5.14",
        "husky": "^8.0.1",
        "react-highlight-words": "^0.18.0",
        "eslint-plugin-jsx-a11y": "^6.2.1",
        "react-sticky": "^6.0.3",
        "css-minimizer-webpack-plugin": "^1.3.0",
        "bisheng-plugin-description": "^0.1.4",
        "react": "^17.0.0",
        "@types/react-sticky": "^6.0.4",
        "cheerio": "1.0.0-rc.12",
        "@ant-design/bisheng-plugin": "^3.3.0-alpha.4",
        "react-helmet-async": "~1.3.0",
        "stylelint-order": "^5.0.0",
        "mini-css-extract-plugin": "^1.6.2",
        "pretty-format": "^29.0.0",
        "http-server": "^14.0.0",
        "@types/puppeteer": "^7.0.4",
        "concurrently": "^7.0.0",
        "eslint-plugin-jest": "^27.0.1",
        "full-icu": "^1.3.0",
        "rc-tween-one": "^3.0.3",
        "remark-lint": "^9.0.0",
        "qs": "^6.10.1",
        "@types/jest-axe": "^3.5.3",
        "jest-image-snapshot": "^6.0.0",
        "jsonml.js": "^0.1.0",
        "@types/react-window": "^1.8.2",
        "@types/warning": "^3.0.0",
        "scrollama": "^3.0.0",
        "array-move": "^4.0.0",
        "@typescript-eslint/parser": "^5.40.0",
        "fetch-jsonp": "^1.1.3",
        "react-dnd": "^16.0.0",
        "rc-virtual-list": "^3.4.11",
        "@ant-design/tools": "^15.1.2",
        "jest-puppeteer": "^6.0.0",
        "react-resizable": "^3.0.1",
        "react-intl": "^6.0.1",
        "glob": "^8.0.1",
        "eslint-config-airbnb": "^19.0.0",
        "@types/react-color": "^3.0.1",
        "duplicate-package-checker-webpack-plugin": "^3.0.0",
        "lz-string": "^1.4.4",
        "react-draggable": "^4.4.3",
        "eslint": "^8.0.0",
        "jsdom": "^20.0.0",
        "@types/react-resizable": "^3.0.0",
        "bisheng": "^3.7.0-alpha.4",
        "@types/lodash": "^4.14.139",
        "jest-axe": "^7.0.0",
        "typescript": "~4.9.3",
        "bisheng-plugin-toc": "^0.4.4",
        "dekko": "^0.2.1",
        "lint-staged": "^13.0.3",
        "@types/qs": "^6.9.7",
        "less-vars-to-js": "^1.3.0",
        "react-dnd-html5-backend": "^16.0.0",
        "@qixian.cs/github-contributors-list": "^1.0.3",
        "eslint-plugin-babel": "^5.3.0",
        "prettier": "^2.3.2",
        "antd": "4.x",
        "webpack-bundle-analyzer": "^4.1.0",
        "eslint-plugin-unicorn": "^44.0.0",
        "bundlesize2": "^0.0.31",
        "theme-switcher": "^1.0.2",
        "react-copy-to-clipboard": "^5.0.1",
        "open": "^8.0.1",
        "enquire-js": "^0.2.1",
        "stylelint-config-standard": "^29.0.0",
        "jest-environment-jsdom": "^29.0.1",
        "mockdate": "^3.0.0",
        "remark-preset-lint-recommended": "^6.0.0",
        "react-fast-marquee": "^1.2.1",
        "@types/gtag.js": "^0.0.12",
        "stylelint": "^14.9.0",
        "@size-limit/file": "^8.0.0",
        "semver": "^7.3.5",
        "jest-environment-node": "^29.0.0",
        "bisheng-plugin-react": "^1.2.0",
        "rome": "^10.0.1",
        "inquirer": "^9.1.2",
        "stylelint-config-prettier": "^9.0.2",
        "@stackblitz/sdk": "^1.3.0",
        "fs-extra": "^10.0.0",
        "docsearch-react-fork": "^0.0.0-alpha.0",
        "simple-git": "^3.0.0",
        "eslint-plugin-react-hooks": "^4.1.2",
        "react-infinite-scroll-component": "^6.1.0",
        "@types/react": "^18.0.0",
        "chalk": "^4.0.0",
        "@docsearch/css": "^3.0.0",
        "xhr-mock": "^2.4.1",
        "react-sortable-hoc": "^2.0.0",
        "increase-memory-limit": "^1.0.7",
        "rimraf": "^3.0.0",
        "eslint-config-prettier": "^8.0.0",
        "stylelint-declaration-block-no-ignored-properties": "^2.1.0",
        "yaml-front-matter": "^4.0.0",
        "@ant-design/hitu": "^0.0.0-alpha.13",
        "@types/jest-image-snapshot": "^5.1.0",
        "remark": "^14.0.1",
        "isomorphic-fetch": "^3.0.0",
        "prettier-plugin-jsdoc": "^0.4.2",
        "immer": "^9.0.1",
        "remove-files-webpack-plugin": "1.5.0",
        "jquery": "^3.4.1",
        "size-limit": "^8.0.0",
        "@types/react-dom": "^18.0.0",
        "eslint-plugin-compat": "~4.0.0",
        "rc-footer": "^0.6.6",
        "react-window": "^1.8.5",
        "fast-glob": "^3.2.11",
        "identity-obj-proxy": "^3.0.0",
        "eslint-plugin-import": "^2.21.1",
        "intersection-observer": "^0.12.0",
        "@types/jest": "^29.0.0",
        "cross-env": "^7.0.0",
        "@testing-library/jest-dom": "^5.16.3",
        "eslint-plugin-markdown": "^3.0.0",
        "eslint-plugin-react": "^7.31.8",
        "esbuild-loader": "^2.13.1",
        "docsearch.js": "^2.6.3",
        "@types/react-copy-to-clipboard": "^5.0.0",
        "antd-img-crop": "^4.2.8",
        "immutability-helper": "^3.0.0",
        "@typescript-eslint/eslint-plugin": "^5.40.0",
        "jest": "^29.4.1",
        "react-github-button": "^0.1.11",
        "react-router-dom": "^6.0.2",
        "babel-plugin-add-react-displayname": "^0.0.5",
        "@testing-library/user-event": "^14.4.2",
        "@types/react-highlight-words": "^0.16.4",
        "stylelint-config-rational-order": "^0.1.2"
      },
      "peerDependencies": {
        "react-dom": ">=16.9.0",
        "react": ">=16.9.0"
      },
      "name": "antd",
      "dist": {
        "tarball": "http://10.30.2.18:8081/repository/npm-public/antd/-/antd-4.24.8.tgz",
        "shasum": "22f34de6857556868780dfa5fe7b374b0b71b517"
      },
      "description": "An enterprise-class UI design language and React components implementation",
      "main": "lib/index.js",
      "_id": "antd@4.24.8",
      "contributors": [
        "ant"
      ],
      "version": "4.24.8",
      "dependencies": {
        "@ctrl/tinycolor": "^3.4.0",
        "lodash": "^4.17.21",
        "rc-dialog": "~9.0.2",
        "@ant-design/icons": "^4.7.0",
        "rc-field-form": "~1.27.0",
        "rc-motion": "^2.6.1",
        "rc-resize-observer": "^1.2.0",
        "moment": "^2.29.2",
        "rc-trigger": "^5.2.10",
        "rc-collapse": "~3.4.2",
        "rc-switch": "~3.2.0",
        "rc-drawer": "~6.1.0",
        "rc-progress": "~3.4.1",
        "rc-upload": "~4.3.0",
        "rc-menu": "~9.8.0",
        "rc-rate": "~2.9.0",
        "rc-segmented": "~2.1.0",
        "rc-slider": "~10.0.0",
        "rc-table": "~7.26.0",
        "rc-tree": "~5.7.0",
        "rc-select": "~14.1.13",
        "rc-mentions": "~1.13.1",
        "@ant-design/colors": "^6.0.0",
        "rc-tree-select": "~5.5.0",
        "copy-to-clipboard": "^3.2.0",
        "@ant-design/react-slick": "~0.29.1",
        "rc-dropdown": "~4.0.0",
        "rc-steps": "~5.0.0-alpha.2",
        "@babel/runtime": "^7.18.3",
        "rc-tooltip": "~5.2.0",
        "rc-image": "~5.13.0",
        "classnames": "^2.2.6",
        "rc-input-number": "~7.3.9",
        "rc-cascader": "~3.7.0",
        "rc-pagination": "~3.2.0",
        "rc-textarea": "~0.4.5",
        "rc-picker": "~2.7.0",
        "scroll-into-view-if-needed": "^2.2.25",
        "rc-util": "^5.22.5",
        "rc-input": "~0.1.4",
        "rc-notification": "~4.6.0",
        "rc-tabs": "~12.5.6",
        "rc-checkbox": "~2.3.0"
      }
    }
  },
  "name": "antd",
  "time": {
    "created": "2023-02-23T04:42:02.670Z",
    "modified": "2023-02-23T04:42:21.081Z",
    "4.24.8": "2023-02-23T04:42:02.670Z"
  },
  "contributors": [
    "ant"
  ],
  "homepage": "https://ant.design"
}

完 

原文地址:https://blog.csdn.net/u011039332/article/details/129212726

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25532.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注