背景:
nodejs模块间耦合性高,升级版本跨度大、变化多,无法进行维护,建议衰退大部分nodejs模块包,后续用户需要使用,可以用npm命令安装,衰退影响不大。
https://gitee.com/openeuler/community/blob/master/sig/sig-nodejs/sig-info.yaml
从以下三个点分析维护
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依赖 |
| 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 |
participants (1)
-
王凯