
背景:
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)
-
王凯