
背景: nodejs模块间耦合性高,升级版本跨度大、变化多,无法进行维护,建议衰退大部分nodejs模块包,后续用户需要使用,可以用npm命令安装,衰退影响不大。 https://gitee.com/openeuler/community/blob/master/sig/sig-nodejs/sig-info.ya... 从以下三个点分析维护 1.工具化批量升级具体困难 举以下3个例子 1)node-semver升级7.7.2 根据 https://github.com/npm/node-semver/blob/v7.7.2/package.json中定义的依赖 "devDependencies": { "@npmcli/eslint-config": "^5.0.0", "@npmcli/template-oss": "4.24.4", "benchmark": "^2.1.4", "tap": "^16.0.0" }, 需要引入 @npmcli/eslint-config、@npmcli/template-oss、benchmark 模块,还需升级nodejs-tap到16.0.0版本 当前nodejs-tap版本为 0.7.1,升级16.0.0 根据https://github.com/tapjs/tapjs/blob/v16.0.0/package.json中定义的依赖 需要引入10+依赖包,升级10+包,工作量过大,且版本演进很快,可能哪一天就衰退了,不利于维护 2)nodejs-abbrev 升级3.0.1 根据https://github.com/npm/abbrev-js/blob/v3.0.1/package.json中定义的依赖 "devDependencies": { "@npmcli/eslint-config": "^5.0.0", "@npmcli/template-oss": "4.24.3", "tap": "^16.3.0" }, 升级需要 nodejs-tap升级16.3.0,引入 @npmcli/eslint-config、@npmcli/template-oss 3)nodejs-acorn 升级8.15.0 根据https://github.com/acornjs/acorn/blob/8.15.0/package.json中定义的依赖 "devDependencies": { "@rollup/plugin-buble": "^1.0.2", "@unicode/unicode-16.0.0": "^1.6.0", "eslint": "^8.57.0", "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.30.0", "eslint-plugin-n": "^16.6.2", "rollup": "^3.29.4", "test262": "git+https://github.com/tc39/test262.git#9b127c190cd418b2451c556784aae3d0ac7e9bcf", "test262-parser-runner": "^0.5.0" } 升级需要引入@rollup/plugin-buble、@unicode/unicode-16.0.0、eslint、eslint-config-standard、eslint-plugin-import、eslint-plugin-n、test262、test262-parser-runner 还需要升级 rollup 到 3.29.4版本 根据以上3个包的升级情况,情况较复杂,工具批量升级没有好的解决方案 1)无法解决引入依赖包问题,目前在版本的nodejs模块包341个软件包,不是最新版本的存在200+,全部升级可能至少得再引入200+软件包及其依赖包 2)软件包兼容问题,nodejs主包大版本升级后,可能导致nodejs模块包构建失败,上游未适配时需要人工处理 2.使用npm安装情况下,无法实现自维护,无网络情况下无法获取这些软件对服务器场景整体影响 对服务器影响不大,仅个别包对nodejs模块进行依赖,这些无法解耦的包暂不衰退 nodejs模块主要使用场景为前端网页,一般都会自行打包nodejs模块进行安装,不会安装nodejs模块包来进行安装,影响可控 3. 第二项的延伸,细化分析编译和构建依赖,对其他软件的影响 见附件表格,排查仅有6个无法衰退,其余的衰退无影响 执行计划,根据影响范围,按sig沟通和社区公示,倒推落地版本 1)sig-nodejs 内部讨论– 已进行 2)上TC评审 3)邮件公示一个月,无异议进行下一步 4)提release PR对nodejs模块包进行剔除,将衰退的包放入recycle sig 目前nodejs模块包均在everything,如无法从版本中移除,建议先全部移动到EPOL中降级维护,仅保证单包正常构建安装 衰退版本:在25.09衰退测试,26.03-LTS移除 衰退软件包等级:目前软件包等级均为L4 CVE影响:LTS版本暂不衰退,有CVE继续处理 目前已上TC评审,建议先发邮件收集意见 以下6个包不衰退 | pkg | 原因 | | nodejs-requirejs | 被kylin-user-guide 安装依赖 | | nodejs-rollup | 被riscv将引入的 electron 依赖 | | nodejs-yarn | 被 sig-openstack 等包依赖 | | nodejs-packaging | 被nodejs-yarn等模块依赖 | | js-jquery | 被gradle依赖 | | uglify-js | 被marked依赖 | 需衰退软件包列表,目前涉及nodejs模块包及其依赖包342个,详细见附件 | pkg | sig | | nodejs-tap | sig-nodejs | | nodejs-abbrev | sig-nodejs | | nodejs-acorn | sig-nodejs | | nodejs-ansi | sig-nodejs | | nodejs-ansi-font | sig-nodejs | | nodejs-ansi-regex | sig-nodejs | | nodejs-ansi-styles | sig-nodejs | | nodejs-are-we-there-yet | sig-nodejs | | nodejs-argparse | sig-nodejs | | nodejs-array-differ | sig-nodejs | | nodejs-array-index | sig-nodejs | | nodejs-array-union | sig-nodejs | | nodejs-array-uniq | sig-nodejs | | nodejs-arrify | sig-nodejs | | nodejs-asap | sig-nodejs | | nodejs-asn1 | sig-nodejs | | nodejs-assert-plus | sig-nodejs | | nodejs-assertion-error | sig-nodejs | | nodejs-async | sig-nodejs | | nodejs-aws-sign2 | sig-nodejs | | nodejs-balanced-match | sig-nodejs | | nodejs-better-assert | sig-nodejs | | nodejs-bindings | sig-nodejs | | nodejs-bl | sig-nodejs | | nodejs-block-stream | sig-nodejs | | nodejs-bluebird | sig-nodejs | | nodejs-boom | sig-nodejs | | nodejs-brace-expansion | sig-nodejs | | nodejs-buffer-equal | sig-nodejs | | nodejs-builtin-modules | sig-nodejs | | nodejs-bunker | sig-nodejs | | nodejs-burrito | sig-nodejs | | nodejs-bytes | sig-nodejs | | nodejs-caller-callsite | sig-nodejs | | nodejs-caller-path | sig-nodejs | | nodejs-callsite | sig-nodejs | | nodejs-callsites | sig-nodejs | | nodejs-caseless | sig-nodejs | | nodejs-chai | sig-nodejs | | nodejs-chalk | sig-nodejs | | nodejs-character-parser | sig-nodejs | | nodejs-charm | sig-nodejs | | nodejs-cjson | sig-nodejs | | nodejs-clean-css | sig-nodejs | | nodejs-cli-color | sig-nodejs | | nodejs-clone | sig-nodejs | | nodejs-closure-compiler | sig-nodejs | | nodejs-colors | sig-nodejs | | nodejs-combined-stream | sig-nodejs | | nodejs-commander | sig-nodejs | | nodejs-commonmark | sig-nodejs | | nodejs-concat-map | sig-nodejs | | nodejs-concat-stream | sig-nodejs | | nodejs-console-dot-log | sig-nodejs | | nodejs-constantinople | sig-nodejs | | nodejs-core-util-is | sig-nodejs | | nodejs-cryptiles | sig-nodejs | | nodejs-css | sig-nodejs | | nodejs-css-parse | sig-nodejs | | nodejs-css-stringify | sig-nodejs | | nodejs-ctype | sig-nodejs | | nodejs-d | sig-nodejs | | nodejs-dateformat | sig-nodejs | | nodejs-debug | sig-nodejs | | nodejs-deep-eql | sig-nodejs | | nodejs-deep-equal | sig-nodejs | | nodejs-deep-is | sig-nodejs | | nodejs-defence | sig-nodejs | | nodejs-defence-cli | sig-nodejs | | nodejs-define-properties | sig-nodejs | | nodejs-defined | sig-nodejs | | nodejs-delayed-stream | sig-nodejs | | nodejs-delegates | sig-nodejs | | nodejs-diff | sig-nodejs | | nodejs-difflet | sig-nodejs | | nodejs-difflib | sig-nodejs | | nodejs-docopt | sig-nodejs | | nodejs-dreamopt | sig-nodejs | | nodejs-duplexer | sig-nodejs | | nodejs-ebnf-parser | sig-nodejs | | nodejs-ejs | sig-nodejs | | nodejs-end-of-stream | sig-nodejs | | nodejs-entities | sig-nodejs | | nodejs-es-abstract | sig-nodejs | | nodejs-es-to-primitive | sig-nodejs | | nodejs-es5-ext | sig-nodejs | | nodejs-es6-iterator | sig-nodejs | | nodejs-es6-symbol | sig-nodejs | | nodejs-es6-weak-map | sig-nodejs | | nodejs-escape-string-regexp | sig-nodejs | | nodejs-escodegen | sig-nodejs | | nodejs-esprima | sig-nodejs | | nodejs-estraverse | sig-nodejs | | nodejs-esutils | sig-nodejs | | nodejs-event-emitter | sig-nodejs | | nodejs-eventemitter2 | sig-nodejs | | nodejs-events-to-array | sig-nodejs | | nodejs-exit | sig-nodejs | | nodejs-expect-dot-js | sig-nodejs | | nodejs-extend | sig-nodejs | | nodejs-eyes | sig-nodejs | | nodejs-fast-levenshtein | sig-nodejs | | nodejs-faye-websocket | sig-nodejs | | nodejs-figures | sig-nodejs | | nodejs-fileset | sig-nodejs | | nodejs-fill-keys | sig-nodejs | | nodejs-find-up | sig-nodejs | | nodejs-findup-sync | sig-nodejs | | nodejs-for-each | sig-nodejs | | nodejs-foreach | sig-nodejs | | nodejs-forever-agent | sig-nodejs | | nodejs-form-data | sig-nodejs | | nodejs-formatio | sig-nodejs | | nodejs-from | sig-nodejs | | nodejs-fstream | sig-nodejs | | nodejs-function-bind | sig-nodejs | | nodejs-gauge | sig-nodejs | | nodejs-gaze | sig-nodejs | | nodejs-generate-function | sig-nodejs | | nodejs-generate-object-property | sig-nodejs | | nodejs-getobject | sig-nodejs | | nodejs-github-url-from-git | sig-nodejs | | nodejs-glob | sig-nodejs | | nodejs-globule | sig-nodejs | | nodejs-graceful-fs | sig-nodejs | | nodejs-graceful-readlink | sig-nodejs | | nodejs-growl | sig-nodejs | | nodejs-grunt | sig-nodejs | | nodejs-grunt-cli | sig-nodejs | | nodejs-grunt-contrib-clean | sig-nodejs | | nodejs-grunt-contrib-internal | sig-nodejs | | nodejs-grunt-contrib-nodeunit | sig-nodejs | | nodejs-grunt-contrib-uglify | sig-nodejs | | nodejs-grunt-known-options | sig-nodejs | | nodejs-grunt-legacy-log | sig-nodejs | | nodejs-grunt-legacy-log-utils | sig-nodejs | | nodejs-grunt-legacy-util | sig-nodejs | | nodejs-gzip-size | sig-nodejs | | nodejs-handlebars | sig-nodejs | | nodejs-har-validator | sig-nodejs | | nodejs-has | sig-nodejs | | nodejs-has-ansi | sig-nodejs | | nodejs-has-color | sig-nodejs | | nodejs-has-flag | sig-nodejs | | nodejs-has-symbols | sig-nodejs | | nodejs-has-unicode | sig-nodejs | | nodejs-hash_file | sig-nodejs | | nodejs-hashish | sig-nodejs | | nodejs-hawk | sig-nodejs | | nodejs-heap | sig-nodejs | | nodejs-hoek | sig-nodejs | | nodejs-hooker | sig-nodejs | | nodejs-hosted-git-info | sig-nodejs | | nodejs-http-signature | sig-nodejs | | nodejs-iconv | sig-nodejs | | nodejs-iconv-lite | sig-nodejs | | nodejs-image-size | sig-nodejs | | nodejs-inflight | sig-nodejs | | nodejs-inherits | sig-nodejs | | nodejs-inherits1 | sig-nodejs | | nodejs-interpret | sig-nodejs | | nodejs-is | sig-nodejs | | nodejs-is-builtin-module | sig-nodejs | | nodejs-is-callable | sig-nodejs | | nodejs-is-date-object | sig-nodejs | | nodejs-is-function | sig-nodejs | | nodejs-is-my-json-valid | sig-nodejs | | nodejs-is-object | sig-nodejs | | nodejs-is-property | sig-nodejs | | nodejs-is-regex | sig-nodejs | | nodejs-is-symbol | sig-nodejs | | nodejs-is-typedarray | sig-nodejs | | nodejs-isarray | sig-nodejs | | nodejs-isexe | sig-nodejs | | nodejs-isstream | sig-nodejs | | nodejs-istanbul | sig-nodejs | | nodejs-jade | sig-nodejs | | nodejs-jison | sig-nodejs | | nodejs-jison-lex | sig-nodejs | | nodejs-jju | sig-nodejs | | nodejs-js-yaml | sig-nodejs | | nodejs-json-diff | sig-nodejs | | nodejs-json-parse-helpfulerror | sig-nodejs | | nodejs-json-stringify-safe | sig-nodejs | | nodejs-jsonify | sig-nodejs | | nodejs-jsonpointer | sig-nodejs | | nodejs-less | sig-nodejs | | nodejs-less-plugin-clean-css | sig-nodejs | | nodejs-levn | sig-nodejs | | nodejs-lex-parser | sig-nodejs | | nodejs-load-grunt-tasks | sig-nodejs | | nodejs-locate-path | sig-nodejs | | nodejs-lolex | sig-nodejs | | nodejs-lru-queue | sig-nodejs | | nodejs-make-arrow-function | sig-nodejs | | nodejs-make-generator-function | sig-nodejs | | nodejs-maxmin | sig-nodejs | | nodejs-mdurl | sig-nodejs | | nodejs-memoizee | sig-nodejs | | nodejs-merge-descriptors | sig-nodejs | | nodejs-mime | sig-nodejs | | nodejs-mime-db | sig-nodejs | | nodejs-mime-types | sig-nodejs | | nodejs-minimatch | sig-nodejs | | nodejs-minimist | sig-nodejs | | nodejs-mkdirp | sig-nodejs | | nodejs-mock-fs | sig-nodejs | | nodejs-module-not-found-error | sig-nodejs | | nodejs-monocle | sig-nodejs | | nodejs-ms | sig-nodejs | | nodejs-multimatch | sig-nodejs | | nodejs-nan | sig-nodejs | | nodejs-nan0 | sig-nodejs | | nodejs-nan1 | sig-nodejs | | nodejs-next-tick | sig-nodejs | | nodejs-node-uuid | sig-nodejs | | nodejs-nomnom | sig-nodejs | | nodejs-nopt | sig-nodejs | | nodejs-noptify | sig-nodejs | | nodejs-normalize-package-data | sig-nodejs | | nodejs-npmlog | sig-nodejs | | nodejs-oauth-sign | sig-nodejs | | nodejs-object-assign | sig-nodejs | | nodejs-object-dot-assign | sig-nodejs | | nodejs-object-inspect | sig-nodejs | | nodejs-object-is | sig-nodejs | | nodejs-object-keys | sig-nodejs | | nodejs-once | sig-nodejs | | nodejs-optimist | sig-nodejs | | nodejs-optionator | sig-nodejs | | nodejs-os-homedir | sig-nodejs | | nodejs-os-tmpdir | sig-nodejs | | nodejs-osenv | sig-nodejs | | nodejs-p-limit | sig-nodejs | | nodejs-p-locate | sig-nodejs | | nodejs-package | sig-nodejs | | nodejs-paperboy | sig-nodejs | | nodejs-path-array | sig-nodejs | | nodejs-path-exists | sig-nodejs | | nodejs-path-is-absolute | sig-nodejs | | nodejs-path-parse | sig-nodejs | | nodejs-pinkie | sig-nodejs | | nodejs-pinkie-promise | sig-nodejs | | nodejs-pkg-up | sig-nodejs | | nodejs-prelude-ls | sig-nodejs | | nodejs-pretty-bytes | sig-nodejs | | nodejs-process-nextick-args | sig-nodejs | | nodejs-promise | sig-nodejs | | nodejs-promises-aplus-tests | sig-nodejs | | nodejs-proxyquire | sig-nodejs | | nodejs-qs | sig-nodejs | | nodejs-raw-body | sig-nodejs | | nodejs-read-package-json | sig-nodejs | | nodejs-readable-stream | sig-nodejs | | nodejs-readdirp | sig-nodejs | | nodejs-rechoir | sig-nodejs | | nodejs-replace-require-self | sig-nodejs | | nodejs-request | sig-nodejs | | nodejs-require-directory | sig-nodejs | | nodejs-require-inject | sig-nodejs | | nodejs-require-uncached | sig-nodejs | | nodejs-resolve | sig-nodejs | | nodejs-resolve-from | sig-nodejs | | nodejs-resolve-pkg | sig-nodejs | | nodejs-resumer | sig-nodejs | | nodejs-rimraf | sig-nodejs | | nodejs-runforcover | sig-nodejs | | nodejs-safe-buffer | sig-nodejs | | nodejs-samsam | sig-nodejs | | nodejs-semver | sig-nodejs | | nodejs-set-immediate-shim | sig-nodejs | | nodejs-shelljs | sig-nodejs | | nodejs-should | sig-nodejs | | nodejs-should-equal | sig-nodejs | | nodejs-should-format | sig-nodejs | | nodejs-should-type | sig-nodejs | | nodejs-simple-assert | sig-nodejs | | nodejs-sinon | sig-nodejs | | nodejs-slide | sig-nodejs | | nodejs-sntp | sig-nodejs | | nodejs-source-map | sig-nodejs | | nodejs-source-map-support | sig-nodejs | | nodejs-spdx-correct | sig-nodejs | | nodejs-spdx-exceptions | sig-nodejs | | nodejs-spdx-expression-parse | sig-nodejs | | nodejs-spdx-license-ids | sig-nodejs | | nodejs-sprintf-js | sig-nodejs | | nodejs-stream-replace | sig-nodejs | | nodejs-string | sig-nodejs | | nodejs-string-dot-prototype-dot-repeat | sig-nodejs | | nodejs-string-dot-prototype-dot-trim | sig-nodejs | | nodejs-string_decoder | sig-nodejs | | nodejs-stringstream | sig-nodejs | | nodejs-strip-ansi | sig-nodejs | | nodejs-strip-json-comments | sig-nodejs | | nodejs-supports-color | sig-nodejs | | nodejs-tap-parser | sig-nodejs | | nodejs-tape | sig-nodejs | | nodejs-tar | sig-nodejs | | nodejs-temporary | sig-nodejs | | nodejs-test | sig-nodejs | | nodejs-through | sig-nodejs | | nodejs-through2 | sig-nodejs | | nodejs-timers-ext | sig-nodejs | | nodejs-tiny-lr-fork | sig-nodejs | | nodejs-tough-cookie | sig-nodejs | | nodejs-transformers | sig-nodejs | | nodejs-traverse | sig-nodejs | | nodejs-tunnel-agent | sig-nodejs | | nodejs-type-check | sig-nodejs | | nodejs-type-detect | sig-nodejs | | nodejs-underscore | sig-nodejs | | nodejs-unpipe | sig-nodejs | | nodejs-uri-path | sig-nodejs | | nodejs-util | sig-nodejs | | nodejs-util-deprecate | sig-nodejs | | nodejs-validate-npm-package-license | sig-nodejs | | nodejs-vows | sig-nodejs | | nodejs-websocket-driver | sig-nodejs | | nodejs-which | sig-nodejs | | nodejs-window-size | sig-nodejs | | nodejs-with | sig-nodejs | | nodejs-wordwrap | sig-nodejs | | nodejs-wrappy | sig-nodejs | | nodejs-xtend | sig-nodejs | | nodejs-yamlish | sig-nodejs | | nodejs-yargs | sig-nodejs | | nodeunit | sig-nodejs | | node-gyp | sig-nodejs | | nodejs-flot | sig-nodejs | | nodejs-jsonselect | sig-nodejs | | nodejs-underscore-dot-string | sig-nodejs | | js-sizzle | sig-nodejs | | uglify-js1 | sig-nodejs | | closure-compiler | sig-nodejs | | lodash | sig-nodejs | | mocha | dev-utils | | coffee-script | Application | | rubygem-coffee-script-source | sig-ruby | | rubygem-coffee-script | sig-ruby | | rubygem-uglifier | sig-ruby | | js-excanvas | dev-utils |