Socket
Socket
Sign inDemoInstall

@wulechuan/cli-scripts--npm-project-helpers

Package Overview
Dependencies
7
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.2.1 to 2.0.1

源代码/发布的源代码/bash/吴乐川-数据处理-文本.sh

11

package.json
{
"name": "@wulechuan/cli-scripts--npm-project-helpers",
"version": "1.2.1",
"version": "2.0.1",
"author": "吴乐川 <wulechuan@live.com>",

@@ -27,4 +27,4 @@ "license": "WTFPL",

"devDependencies": {
"@wulechuan/cli-scripts--git-push": "^6.0.8",
"eslint": "^8.16.0"
"@wulechuan/cli-scripts--git-push": "^6.0.9",
"eslint": "^8.19.0"
},

@@ -43,4 +43,5 @@ "homepage": "https://github.com/wulechuan/wulechuan--cli-scripts--npm-project-helpers#readme",

"依赖包管理",
"在某 npm 项目中贪婪的升级各 npm 依赖包之版本",
"批处理",
"在某 npm 项目中贪婪地升级各 npm 依赖包之版本",
"update",
"upgrade",
"命令行",

@@ -47,0 +48,0 @@ "command-line",

@@ -40,8 +40,9 @@ <link rel="stylesheet" href="./文档集/文档的样式/wulechuan-styles-for-html-via-markdown--vscode.default.min.css">

本工具集之主体采用 2 种命令行环境之语言(即 PowerShell 语言和 Bash 语言)编写,仅运行与于命令行环境中。它们用以辅助任何 npm 项目构建适用其环境的命令行实用工具。而**构建出的这些实用工具用以“贪婪地”升级该 npm 项目的各依赖包之版本。本工具集亦随附了这些实用工具的雏形,稍加修改即可运转,颇为方便。**
本工具集之主体是一些处于雏形状态的命令行工具,有【PowerShell】和【类 Bash】两类。我们对这些雏形稍加修改,它们即可如期运转。**它们的功用是辅助某 npm 项目以“贪婪地”升级该 npm 项目的各依赖包之版本。**
特别的,本工具集安装伊始,其内建的 JavaScript 程序会还自动为这些实用工具设计配套的 VSCode 任务,遂更为方便。
本工具略显复杂。保持该复杂性旨在贯彻“代码即文档”的理念。参见下文《[运行截屏](#运行截屏)》。
**本工具集有“实用价值不高”之嫌,但它们满足了我个人的癖好。**
特别的,本工具集安装伊始,其内建的 JavaScript 程序会还自动为这些工具设计配套的 VSCode 任务,这为 VSCode 用户提供了方便。
#### 运行截屏

@@ -65,4 +66,6 @@

- 存放于《GitHub》上的图片。
- 存放于《集得中心》上的图片。
> 鄙人所谓【集得中心】,即外国话 GitHub 。
1. 《[吴乐川的_npm_项目依赖包管理工具运行截屏_2022-05-26_01](https://github.com/wulechuan/wulechuan--cli-scripts--npm-project-helpers/blob/master/文档集/插图集/吴乐川的_npm_项目依赖包管理工具运行截屏_2022-05-26_01.png)》,

@@ -80,14 +83,15 @@ 1. 《[吴乐川的_npm_项目依赖包管理工具运行截屏_2022-05-26_02](https://github.com/wulechuan/wulechuan--cli-scripts--npm-project-helpers/blob/master/文档集/插图集/吴乐川的_npm_项目依赖包管理工具运行截屏_2022-05-26_02.png)》,

本人研发 npm 项目时,常常会“贪婪地”升级各种依赖包的版本。
本人研发 npm 项目时,常常会“贪婪地”升级该 npm 项目的各种依赖包的版本。
- 于其中一些依赖包,即便是进行了主版本的升迁,我们自己的 npm 项目也会“很幸运的”照常运转。
- 但另有一些依赖包,如果升级至过于晚近的版本,则我们字节的 npm 项目将无法运转。遂应令这些依赖包之版本保持在某个较旧的版本(范围)。换句话说,这些包的版本有上限约束。
- 于其中一些依赖包,即便是进行了主版本的升迁,例如 eslint 从 `v7.x.x` 升级至 `v8.19.0`,我们自己的 npm 项目也会“很幸运的”照常运转。
在追求上述形式时,会遇到以下问题:
- 但另有一些依赖包,如果升级至过于晚近的版本,例如 chalk 从 `v4.x.x` 升级至 `v5.0.0`,则会令我们自己的 npm 项目无法运转。遂应令这些依赖包之版本保持在某个较旧的版本上或某个版本范围内。换句话说,这些包的版本有上限约束。
- 当须贪婪地升级各种依赖包时, `npm up` 命令是达不到目的的,因为该命令较为保守。
在追求上述目标时,会遇到以下问题:
- 欲“贪婪地”升级各种依赖包时, `npm up` 命令是达不到目的的,因为该命令过于保守。
- 当一股脑采用 `npm i 包名@latest` 时,又无法妥善处理那些须遵守版本上限约束的依赖包。
故本人在几乎所有本人私有的或有本人主导的 npm 项目中都随附了专门的命令行脚本,用以分门别类依照不同策略(贪婪或守限)管理这些依赖包的**安装任务**。久而久之,提炼成形,汇于本工具集中。以期提升这类工具的自动化水平,减少重复劳动。
故本人在几乎所有本人私有的或由本人主导的 npm 项目中都随附了专门的命令行脚本,用以分门别类依照不同策略(贪婪或守限)管理这些依赖包的**安装任务**。久而久之,提炼成形,汇于本工具集中。

@@ -115,12 +119,19 @@

但当上述多个命令顺次执行时,它们的输出既不够美观,也不可一目了然。于我这种吹毛求疵的人而言,此种“简约之美”往往是不可接受的。为使命令行工具的界面信息美观、易读,也为了便于我和“*潜在的合作者*”交流或交接,我在日常研学中时不时会在“无关痛痒”的美观方面下功夫,逐渐形成了一些辅助性工具,汇集于此。如你所猜想的一般,本工具集侧重为命令行之输出信息做装点,提供相对美观、易读的界面信息,而鲜少有复杂的任务逻辑。何况所谓“核心”的任务逻辑是因项目而异的,并非某通用工具力所能及。
然而,
因此,**本工具集有“实用价值不高”之嫌,但它们满足了我个人的癖好。**
- 一方面,每当上述多个命令顺次执行时,它们的输出既不够美观,也不可一目了然。于我这种吹毛求疵的人而言,此种“简约之美”往往是不可接受的。
- 另一方面,每当某依赖包须坚守在某版本范围内时,我们应说明缘由。否则该项目的其他参与者或接手者也难以理解。
为使命令行工具的界面信息美观、易读,也为了令其输出有价值的交代信息,以便我和“*潜在的合作者*”交流或交接,我在日常研学中逐渐形成了一些辅助性工具,汇集于此。
如你所猜想的一般,本工具集不论是配置方法还是运行过程,均侧重令各命令在运行环境中提供足够的信息,并令这些信息较为美观。因此,**本工具集有“实用价值不高”之嫌,但它们满足了我个人的癖好。**
须注意,本套工具之主体均非采用 JavaScript 语言族编写,而是采用 2 种命令行环境之语言编写,即 PowerShell 语言和 Bash 语言。**故本工具集之主体仅用于(多种)命令行环境。**
还须注意,虽然本套工具之主体并非 JavaScript 程序,但本工具集确实内建了一些有价值的 JavaScript 程序。每当其他 npm 包(暂称**甲**)安装完本工具集之际,本工具集内建的那些 JavaScript 程序会自动改动甲的环境配置,例如:
虽然本套工具之主体并非 JavaScript 程序,但本工具集仍内建了一些有价值的 JavaScript 程序。每当其他 npm 包(暂称**甲**)安装完本工具集之际,本工具集内建的那些 JavaScript 程序会自动改动甲的环境配置,例如:
- 将作为本工具集主体的**工具雏形**复制到甲中的特定文件夹内。
- 将本工具集随附的**实用工具之雏形**复制到甲中的特定文件夹内(稍加修改即可运转)。
> 这些雏形均为命令行脚本(PowerShell 与 Bash)文件。之后,按甲之具体要求对这些雏形稍加修改,它们即可运转。
- 构建一些实用的 VSCode 任务,以配合上述实用工具。

@@ -130,2 +141,4 @@

#### 本工具集之主体在运行时的任务清单

@@ -135,3 +148,3 @@

> 注意,下文所谓“当前 npm 项目”,亦可称“你的 npm 项目”,以区别本工具集。当前 npm 项目安装并利用本工具集。
> 注意,下文所谓“当前 npm 项目”,亦可称“你的 npm 项目”,以区别本工具集。此即是说,所谓“当前 npm 项目”安装并利用本工具集。

@@ -146,14 +159,19 @@ 1. 如果配置允许,**删除当前文件夹内的 `node_modules` 文件夹** 。

1. 依照预先配置,将当前 npm 项目的【**产品级**】依赖包中,凡 **不必对安装版本做限制者** ,正常安装。采用的命令是 `npm i` 。
1. 依照预先配置,安装当前 npm 项目的【**产品级**】依赖包中凡 **安装版本不设限者** 。
> 所谓【产品级】依赖包,即是指列示在当前 npm 项目自身的 `package.json` 中的 `dependencies` 条目中的一切子条目。
> 注:所谓【产品级】依赖包,即是指列示在当前 npm 项目自身的 `package.json` 中的 `dependencies` 条目中的一切子条目。
>
> 安装它们时采用的命令是 `npm install --save-prod`。亦可简写为 `npm i -P`。
1. 依照预先配置,将当前 npm 项目的【**产品级**】依赖包中,凡 **须对安装版本做出限制者** ,正常安装。采用的命令是 `npm i` 。
1. 依照预先配置,安装当前 npm 项目的【**产品级**】依赖包中凡 **安装版本须设限者**。
1. 依照预先配置,将当前 npm 项目的【**研发级**】依赖包中,凡 **不必对安装版本做限制者** ,正常安装。采用的命令是 `npm i -D` 。
> 所谓【研发级】依赖包,即是指列示在当前 npm 项目自身的 `package.json` 中的 `devDependencies` 条目中的一切子条目。
1. 依照预先配置,安装当前 npm 项目的【**研发级**】依赖包中凡 **安装版本不设限者**。
1. 依照预先配置,将当前 npm 项目的【**研品级**】依赖包中,凡 **须对安装版本做出限制者** ,正常安装。采用的命令是 `npm i -D` 。
> 注:所谓【研发级】依赖包,即是指列示在当前 npm 项目自身的 `package.json` 中的 `devDependencies` 条目中的一切子条目。
>
> 安装它们时采用的命令是 `npm install --save-dev`。亦可简写为 `npm i -D`。
1. 依照预先配置,安装当前 npm 项目的【**研品级**】依赖包中凡 **安装版本须设限者**。
1. 如果存在与“ **更新与研发相关的数据库** ”有关之任务,则执行这些任务。须知,这些任务由当前 npm 项目的维护者自由设计。本工具集仅提供较美观的提示信息,别无其它。

@@ -164,8 +182,16 @@

由上可见,为当前 npm 项目安装或更新 npm 依赖包是本工具集之主要任务。它将当前 npm 项目的各色依赖包**分为四个种类,分别安装之**。将依赖包归为这四类之一,须事先做一点配置工作。但是,配置工作在本工具集的 Bash 版本和 PowerShell 版本之间是有区别的,如下:
由上可见,为当前 npm 项目安装或更新 npm 依赖包是本工具集之主要任务。它将当前 npm 项目的各色依赖包**分为四个种类,依次分批安装之,每类一批**。
- PowerShell 语言更为强大而灵活,故我采用 PowerShell 语言已经实现了“描述性”的配置,而将处理该配置的逻辑细节统统隐藏。非但如此,但本工具集在安装完成之际,会借助内部的 JavaScript 程序自动扫描当前 npm 项目的 `package.json` 文件,并据此构建出实用的 PowerShell 脚本。如果你的项目不会频繁变更依赖包之集合,那么该自动产生的 PowerShell 脚本令你近乎“无”劳永逸。
要将依赖包归为这四类之一,须事先做一点配置工作。针对本工具集的 Bash 版本和 PowerShell 版本的工具的配置工作是略有区别的,如下:
- 限于本人的 Bash 应用水平,本工具集的 Bash 版本并不能做“花式”的配置。具体而言,理论上你需要手工书写命令行。但本工具集在安装完成之际,会借助内部的 JavaScript 程序自动扫描当前 npm 项目的 `package.json` 文件,并据此构建出实用的 bash 脚本。这些 bash 脚本的内容平淡无奇,但所幸就在“**自动生成**”四个字上。如果你的项目不会频繁变更依赖包之集合,那么该自动产生的 Bash 脚本令你近乎“无”劳永逸。
- PowerShell 语言强大而灵活,故本工具集在第 `v1.0.0` 版中,采用 PowerShell 语言的工具就已经实现了“描述性”的配置,而将处理该配置的逻辑细节统统隐藏。非但如此,本工具集在安装完成之际,会借助内部的 JavaScript 程序**自动**扫描当前 npm 项目的 `package.json` 文件,并将这些信息与本工具提供的范本(或者说雏形)结合起来,构建出真正实用的 PowerShell 脚本。
如果你的项目不会频繁变更依赖包之集合,那么该自动产生的 PowerShell 脚本令你近乎“无”劳永逸。
- 自本工具 `v2.0.0` 始,Bash 语言书写的工具也实现了“描述性”的配置。且本工具内部的 JavaScript 程序同样会自动产生实用的 Bash 脚本。
> 比 PowerShell 版的脚本工具更妙的是,每当所谓“当前 npm 项目”的依赖包列表发生变动后,如果再次运行本工具集提供的 JavaScript 辅助工具,则“当前 npm 项目”中业已存在的 Bash 脚本会自动修订以反映当前 npm 项目的依赖包之变动。只是,`v2.0.0` 版暂无来得及提供方便的途径做到 “再次运行那些 JavaScript 辅助工具”。直白的说,再次运行那些脚本的方法较为麻烦,有待日后演进出更佳的方案。
>
> 目前,每当当前 npm 项目之依赖包变动后,要令本工具集内建的 JavaScript 工具自动修订 Bash 工具集,可以这样做:删除当前项目的 `node_modules` 文件夹,并执行 `npm i` 。因为为当前 npm 项目重新安装各依赖包时,自然也会安装本工具集,此时,本工具集内建之 JavaScript 会执行一次。故而,当前 npm 项目中实用的本工具集中的 bash 脚本即会得到修订。
## 安装与使用

@@ -175,3 +201,3 @@

本工具集虽然运行在命令行环境(【PowerShell】 或【类 Bash】),但**专门服务于各色 npm 项目,且其自动化安装和部署之功能也有赖于 npm** 。自然的,本人令本工具集依托 npm 发行,故安装本工具集也应当借助 npm 。
本工具集虽然运行在命令行环境(【PowerShell】 或【类 Bash】),但**专门服务于各色 npm 项目,且其自动化安装和部署之功能也有赖于 npm** 。自然的,本人令本工具集依托 npm 发行。故安装本工具集也应当借助 npm 。

@@ -220,7 +246,10 @@ > 脱离 npm 来安装本工具集之方法无实用价值。从略。

- 如果甲中尚无 `.vscode/tasks.json` 这一文件,本工具集将创建之。
- 修订 `<甲>/.vscode/tasks.json` ,使得甲具备几个专门用于调用本工具集之命令行脚本的【任务】。
- 本工具会尽量将一个采用 PowerShell 语言撰写的命令行脚本文件复制到 `<甲>/用于研发阶段的命令行工具集/PowerShell/` 这一文件夹内。如果此文件夹中原先已有同名脚本文件,则这些旧文件将得到保留,不会被覆盖。**但自本工具集之 JavaScript 程序会尽可能修订业已存在的旧有命令行脚本文件。**
- 本工具会尽量将一个采用 Bash 语言撰写的命令行脚本文件复制到 `<甲>/用于研发阶段的命令行工具集/bash/` 这一文件夹内。如果此文件夹中原先已有同名脚本文件,则这些旧文件将得到保留,不会被覆盖。**但自本工具集之 JavaScript 程序会尽可能修订业已存在的旧有命令行脚本文件。**
- 本工具会尽量将一个采用 PowerShell 语言撰写的命令行脚本文件复制到 `<甲>/用于研发阶段的命令行工具集/PowerShell/` 这一文件夹内。如果此文件夹中原先已有同名脚本文件,则这些旧文件将得到保留,不会被覆盖。**但自本工具集之 JavaScript 程序会谨慎修订业已存在的旧有命令行脚本文件。**
- 本工具会尽量将一个采用 Bash 语言撰写的命令行脚本文件复制到 `<甲>/用于研发阶段的命令行工具集/bash/` 这一文件夹内。如果此文件夹中原先已有同名脚本文件,则这些旧文件将得到保留,不会被覆盖。**但自本工具集之 JavaScript 程序会谨慎修订业已存在的旧有命令行脚本文件。**
### 使用

@@ -234,3 +263,3 @@

> 另,*本工具集自用之 PowerShell 脚本文件* 与上述自动产生的 PowerShell 脚本文件高度相似,亦可参阅:
> 另,*本工具集自用之 PowerShell 脚本文件* 与上述自动产生的 PowerShell 脚本文件高度相似,亦可参阅之:
>

@@ -241,4 +270,7 @@ > - 《[./用于研发阶段的命令行工具集/PowerShell/Update-更新所有-npm-依赖包至允许范围内的最新版本.ps1](./用于研发阶段的命令行工具集/PowerShell/Update-更新所有-npm-依赖包至允许范围内的最新版本.ps1)》。

##### PowerShell 环境中的简易用法示例 1
##### PowerShell 环境中的用法简例 1
<details>
<summary>PowerShell 环境中的用法简例 1</summary>
```ps1

@@ -298,7 +330,11 @@ [string]${script:吴乐川的模块的路径} = '.\node_modules\@wulechuan\cli-scripts--npm-project-helpers\源代码\发布的源代码\PowerShell'

</details>
##### PowerShell 环境中的简易用法示例 2
##### PowerShell 环境中的用法简例 2
再举一个稍复杂的例子。本例来自我为某陈旧项目所作的真实配置。参见上文《[运行截屏](#运行截屏)》。
<details>
<summary>PowerShell 环境中的用法简例 2</summary>
```ps1

@@ -444,2 +480,3 @@ # 本例来自我为某陈旧项目所作的真实配置。

</details>

@@ -449,6 +486,6 @@

由上例可见,在 PowerShell 环境中,为一组 npm 依赖包配置版本范围,关键是配置 PowerShell 的 `HashTable` 。配置时,需尊照本人设计的数据结构,或者说本人设计的规则。
由上例可见,在 PowerShell 环境中,为一组 npm 依赖包配置版本范围,关键是配置 PowerShell 的 `HashTable` 。配置时,需尊照本人设计的数据结构,或者说本人设计的规则。这些规则用外国话讲叫做 Schema 。详见下文。
###### 为 npm 依赖包配置版本时应遵守的结构性规则( Shcema )
###### 为 npm 依赖包配置版本时应遵守的结构性规则( Schema )

@@ -461,2 +498,6 @@ 1. 采用 PowerShell 语言描述之。

<details>
<summary>配置的结构性规则(采用 PowerShell 语言描述)</summary>
```ps1

@@ -468,3 +509,3 @@ # 节选自“由工具集自动构建的命令行脚本”。

# 说白了就是在安装这些依赖包时,会采取该命令:
# npm install ,而不带 --save-dev 之参数。
# npm install --save-prod 。
这批依赖包之依赖类别 = '本产品拟囊括这些软件之整体或部分'

@@ -522,6 +563,12 @@

</details>
1. 如果你对 PowerShell 代码有些陌生,一时间不能完全理解;同时,假如你熟悉 JSON 格式,那么我不妨假借一个 JSON(实则 JSONC) 来向你说明上述 PowerShell 中各 npm 包配置项集应遵循的数据结构。望能达意。
<details>
<summary>配置的结构性规则(采用 JSONC 语言描述)</summary>
```jsonc

@@ -627,4 +674,11 @@ /**

</details>
1. 如果你对 PowerShell 代码有些陌生,一时间不能完全理解;同时,如果你是 TypeScript 的程序员,那么我不妨假借下例来向你说明 PowerShell 中各 npm 包配置项集应遵循的数据结构。望能达意。
<details>
<summary>配置的结构性规则(采用 TypeScript 语言描述)</summary>
```typescript

@@ -683,3 +737,5 @@ /**

</details>
##### 附:PowerShell 的一些基本知识

@@ -729,9 +785,7 @@

本说明书中针对 bash 环境给出的示例(见下文)较简易,以突出要素。
本说明书中针对类 Bash 环境给出的示例(见下文)较简易,以突出要素。
而本工具集随附的 JavaScript 程序会自动在你的 npm 项目的特定文件夹中产生一个 Bash 脚本文件,该文件之内容略比下例复杂、实用。可直接阅读并修订之。
本工具集随附的 JavaScript 程序会自动在你的 npm 项目的特定文件夹中的 `bash` 子文件夹内产生一个 `.sh` 文件,该文件之内容略比下例复杂、实用。可直接阅读并修订之。
实事求是地说,目前本工具集之 Bash 版本,自动化程度很低。因此,其他 Bash 程序对本工具集提供的 Bash 加以利用时,鲜有精彩可言,仅限于调用若干由本工具集提供的功能简朴之函数,以美化输出信息。以上述自动产生的 Bash 脚本文件为例,其中的逻辑并不比下例复杂多少。该自动产生的 .sh 文件的整个内容可谓“平淡无奇”。 **所幸就在“自动”二字。**
> 另,*本工具集自用之 Bash 脚本文件* 与上述自动产生的 Bash 脚本文件高度相似,亦可参阅:
> 另,*本工具集自用之 Bash 脚本文件* 与上述自动产生的 Bash 脚本文件高度相似,亦可参阅之:
>

@@ -742,58 +796,79 @@ > - 《[./用于研发阶段的命令行工具集/bash/update-更新所有-npm-依赖包至允许范围内的最新版本.sh](./用于研发阶段的命令行工具集/bash/update-更新所有-npm-依赖包至允许范围内的最新版本.sh)》。

##### 【类 Bash】环境中的用法简例
##### 【类 Bash】环境中的用法简例 1
<details>
<summary>【类 Bash】环境中的用法简例 1</summary>
```bash
#!/bin/bash
source './源代码/发布的源代码/bash/吴乐川-管理某-npm-项目的依赖包等资源.sh'
__wulechuan_temporary_var___source_common_path__='./node_modules/@wulechuan/cli-scripts--npm-project-helpers'
source "${__wulechuan_temporary_var___source_common_path__}/源代码/发布的源代码/bash/吴乐川-针对命令与函数的辅助工具集.sh"
source "${__wulechuan_temporary_var___source_common_path__}/源代码/发布的源代码/bash/吴乐川-数据处理-文本.sh"
source "${__wulechuan_temporary_var___source_common_path__}/源代码/发布的源代码/bash/吴乐川-管理某-npm-项目的依赖包等资源.sh"
# 注意,下方命令行中有 “--某产品级依赖包之版本配置” 和 “--某研发级依赖包之版本配置” 两种参数。且它们均可出现多次。
Update-吴乐川更新当前_npm_项目的所有依赖包 \
--某产品级依赖包之版本配置 '@wulechuan/text-basic-typography |--| null' \
--某产品级依赖包之版本配置 'chalk |--| 4 |--| chalk 自版本 5 始,要求 npm 项目采用 JavaScript 模块。' \
--某产品级依赖包之版本配置 'fs-extra |--| null' \
--某产品级依赖包之版本配置 'jsonc-parser |--| null' \
--某研发级依赖包之版本配置 '@wulechuan/cli-scripts--git-push |--| null' \
--某研发级依赖包之版本配置 'eslint |--| null' \
--内容分割记号 '|--|' \
--NPM安装依赖包时须额外带上的参数序列='--foreground-scripts' \
--应仅作仿真演练 false
unset __wulechuan_temporary_var___source_common_path__
# ───────────────────────────────────────
```
Remove-吴乐川管理某_npm_项目__删除当前文件夹下的_node_modules --should-run-this-task true
Remove-吴乐川管理某_npm_项目__删除当前文件夹下的_package_lock_json --should-run-this-task true
</details>
##### 【类 Bash】环境中的用法简例 2
<details>
<summary>【类 Bash】环境中的用法简例 2</summary>
# ───────────────────────────────────────
```bash
#!/bin/bash
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_产品级_均为最晚版本
__wulechuan_temporary_var___source_common_path__='./node_modules/@wulechuan/cli-scripts--npm-project-helpers'
npm i \
chalk@latest \
fs-extra@latest \
jsonc-parser@latest
source "${__wulechuan_temporary_var___source_common_path__}/源代码/发布的源代码/bash/吴乐川-针对命令与函数的辅助工具集.sh"
source "${__wulechuan_temporary_var___source_common_path__}/源代码/发布的源代码/bash/吴乐川-数据处理-文本.sh"
source "${__wulechuan_temporary_var___source_common_path__}/源代码/发布的源代码/bash/吴乐川-打印-json.sh"
source "${__wulechuan_temporary_var___source_common_path__}/源代码/发布的源代码/bash/吴乐川-管理某-npm-项目的依赖包等资源.sh"
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_产品级_均为最晚版本 --is-ending
# ───────────────────────────────────────
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_产品级_均为特定版本
echo '暂无。'
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_产品级_均为特定版本 --is-ending
function 完整流程 {
local ShouldDryRun
local NpmArguments
# ───────────────────────────────────────
local ArgumentConfigsArray=(
# 以下是本函数接受并主动存放在变量中的参数之列表。
# 命令行参数名 | 变量名 | 取值之类型 | 默认值
# ---------------------------------------------------------------------------------------------------------------------------------------------------------------
"--应仅作仿真演练 | ShouldDryRun | 标准类型_布尔 | false"
"--npm-args | NpmArguments | 标准类型_文本 | " # --foreground-scripts
)
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_研发级_均为最晚版本
npm i -D \
@wulechuan/cli-scripts--git-push@latest \
eslint@latest
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_研发级_均为最晚版本 --is-ending
# ───────────────────────────────────────
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_研发级_均为特定版本
# ------------- 开始 -------------
echo '暂无。'
local LastTaskReturnCode
Write-吴乐川管理某_npm_项目__打印提示语__新装或升级某批依赖包_研发级_均为特定版本 --is-ending
Read-吴乐川读取并处理某函数的参数表 --调试功能之级别 0 "$@"
LastTaskReturnCode=$?; if [ $LastTaskReturnCode -ne 0 ]; then return $LastTaskReturnCode; fi

@@ -804,43 +879,78 @@

# ───────────────────────────────────────
# ────────────────────────────────────────────────────────────────
# 1) 安装【产品级】和【研发级】依赖包。
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 顺便提醒,虽然一般而言 latest 版本应恰为最高版本,但并不确保。
# ────────────────────────────────────────────────────────────────
Write-吴乐川管理某_npm_项目__打印提示语__更新与研发相关的数据库
# 如果 @wulechuan/cli-scripts--npm-project-helpers 工具集随附的 JavaScript 程序运行如期,
# 其将在此处插入当前 npm 项目的【产品级】、【可自由采取其版本】的依赖包的列表。 另,切勿改动该行。该行之部分文字是供 JavaScript 程序识别的特殊记号。
if true; then
# 注意,下方命令行中有 “--某产品级依赖包之版本配置” 和 “--某研发级依赖包之版本配置” 两种参数。且它们均可出现多次。
Update-吴乐川更新当前_npm_项目的所有依赖包 \
--某产品级依赖包之版本配置 '@wulechuan/text-basic-typography |::| null' \
--某产品级依赖包之版本配置 'chalk |::| 4 |::| chalk 自版本 5 始,要求 npm 项目采用 JavaScript 模块。' \
--某产品级依赖包之版本配置 'fs-extra |::| null' \
--某产品级依赖包之版本配置 'jsonc-parser |::| null' \
--某研发级依赖包之版本配置 '@wulechuan/cli-scripts--git-push |::| null' \
--某研发级依赖包之版本配置 'eslint |::| null' \
--内容分割记号 '|::|' \
--NPM安装依赖包时须额外带上的参数序列="$NpmArguments" \
--应仅作仿真演练 "$ShouldDryRun"
LastTaskReturnCode=$?; if [ $LastTaskReturnCode -ne 0 ]; then return $LastTaskReturnCode; fi
# ────────────────────────────────────────────────────────────────
# 2) 更新与研发相关的数据库。
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 例如: Browserslist:caniuse-lite
# ────────────────────────────────────────────────────────────────
Write-吴乐川管理某_npm_项目__打印提示语__更新与研发相关的数据库 --应仅作仿真演练 $ShouldDryRun
echo '暂无。'
else
Write-吴乐川管理某_npm_项目__打印提示语__更新与研发相关的数据库 --应仅作仿真演练 $ShouldDryRun --系作为该任务之结束提示语
[ 0 ] # 当本 else 语句块中没有其它语句时,这句必须存在。
# npx browserslist@latest --update-db
fi
Write-吴乐川管理某_npm_项目__打印提示语__更新与研发相关的数据库 --is-ending
# ────────────────────────────────────────────────────────────────
# 3) 其他交代。
# ────────────────────────────────────────────────────────────────
Write-吴乐川管理某_npm_项目__打印提示语__其他交代 --应仅作仿真演练 $ShouldDryRun
echo '每当五星红旗升起时,别忘了立正行礼。'
# ───────────────────────────────────────
Write-吴乐川管理某_npm_项目__打印提示语__其他交代 --应仅作仿真演练 $ShouldDryRun --系作为该任务之结束提示语
}
Write-吴乐川管理某_npm_项目__打印提示语__其他交代
if true; then
echo '暂无。'
else
[ 0 ] # 当本 else 语句块中没有其它语句时,这句必须存在。
完整流程 "$@"
# 此处不妨做些关于当前 npm 项目的必要交代。例如注意事项、关键步骤等等。
__wulechuan_temporary_var___exit_code__exception_code__=$?
if [ $__wulechuan_temporary_var___exit_code__exception_code__ -ne 0 ]; then
echo -e "\e[0;31m──────────────────────── \e[0;0m"
echo -e "\e[0;31m程序异常结束代码: \e[0;33m${__wulechuan_temporary_var___exit_code__exception_code__} \e[0;0m"
echo -e "\e[0;31m──────────────────────── \e[0;0m\n "
fi
Write-吴乐川管理某_npm_项目__打印提示语__其他交代 --is-ending
unset -f 完整流程
unset __wulechuan_temporary_var___source_common_path__
return $__wulechuan_temporary_var___exit_code__exception_code__
```
</details>

@@ -847,0 +957,0 @@

module.exports = {
用于研发阶段的命令行工具集_这一文件夹之相对路径_默认值: '用于研发阶段的命令行工具集',
在_PowerShell_命令行范本中需替换为当前_npm_的_产品级_依赖包列表的占位文本: '将在此处插入当前 npm 项目的【产品级】依赖包的列表',
在_PowerShell_命令行范本中需替换为当前_npm_的_研发级_依赖包列表的占位文本: '将在此处插入当前 npm 项目的【研发级】依赖包的列表',
在_PowerShell_命令行范本中需替换为当前_npm_的_产品级_依赖包列表的插入引导文本: '将在此处插入当前 npm 项目的【产品级】依赖包的列表',
在_PowerShell_命令行范本中需替换为当前_npm_的_研发级_依赖包列表的插入引导文本: '将在此处插入当前 npm 项目的【研发级】依赖包的列表',
在_Bash_命令行范本中需替换为当前_npm_的_产品级_依赖包列表的占位文本_凡可自由采用其版本者: '将在此处插入当前 npm 项目的【产品级】、【可自由采取其版本】的依赖包的列表',
在_Bash_命令行范本中需替换为当前_npm_的_产品级_依赖包列表的占位文本_凡须锁定其版本范围者: '将在此处插入当前 npm 项目的【产品级】、【须锁定其版本范围】依赖包的列表',
在_Bash_命令行范本中需替换为当前_npm_的_依赖包列表的插入引导文本_起始记号: '将在此后插入当前 npm 项目的依赖包之列表',
在_Bash_命令行范本中需替换为当前_npm_的_依赖包列表的插入引导文本_结束记号: '将在此前插入当前 npm 项目的依赖包之列表',
在_Bash_命令行范本中需替换为当前_npm_的_研发级_依赖包列表的占位文本_凡可自由采取其版本者: '将在此处插入当前 npm 项目的【研发级】、【可自由采取其版本】依赖包的列表',
在_Bash_命令行范本中需替换为当前_npm_的_研发级_依赖包列表的占位文本_凡须锁定其版本范围者: '将在此处插入当前 npm 项目的【研发级】、【须锁定其版本范围】依赖包的列表',
在_Bash_命令行中用作关键配置中的分割符的文本记号: '|:|',
}

@@ -195,5 +195,9 @@ /**

if (探测结果1.疑似为本工具集自身的_install_生命周期任务故不必配置命令行脚本) {
return Promise.reject({ 粉笔工具, 本工具集一切命令行消息之前缀, 出现异常: false })
return Promise.reject({ 粉笔工具, 本工具集一切命令行消息之前缀, 运行时出现过异常: false })
} else {
return Promise.reject({ 粉笔工具, 本工具集一切命令行消息之前缀, 出现异常: true })
if (探测结果1.找到的_node_modules_之个数 === 0) {
return Promise.reject({ 粉笔工具, 本工具集一切命令行消息之前缀, 运行时出现过异常: true })
} else {
return Promise.reject({ 粉笔工具, 本工具集一切命令行消息之前缀, 运行时出现过异常: false })
}

@@ -292,4 +296,4 @@ }

}))
}).catch(传入的工具集 => {
if (!传入的工具集) { return }
}).catch(包含工具集与运行状态的集总对象 => {
if (!包含工具集与运行状态的集总对象) { return }

@@ -299,11 +303,11 @@

/** @type {boolean} */
const 出现异常 = 传入的工具集.出现异常
const 运行时出现过异常 = 包含工具集与运行状态的集总对象.运行时出现过异常
/** @type {范_粉笔工具} */
const 粉笔工具 = 传入的工具集.粉笔工具
const 粉笔工具 = 包含工具集与运行状态的集总对象.粉笔工具
/** @type {string} */
const 本工具集一切命令行消息之前缀 = 传入的工具集.本工具集一切命令行消息之前缀
const 本工具集一切命令行消息之前缀 = 包含工具集与运行状态的集总对象.本工具集一切命令行消息之前缀
if (出现异常) {
if (运行时出现过异常) {
console.error(`\n${

@@ -313,8 +317,2 @@ 本工具集一切命令行消息之前缀

粉笔工具.bgRed.whiteBright(' 自动配置失败 ')
} 。\n\n ${
'虽然本工具集的“自动配置”未能成功,'
}\n ${
'但本工具集仍存在于 node_modules 文件夹中。'
}\n ${
'不妨参阅文档进行手工配置。'
}\n\n\n`)

@@ -321,0 +319,0 @@ } else {

@@ -149,3 +149,3 @@ module.exports = {

*
* @returns {{ 理想的文件夹之完整路径: string; 未成功: boolean; 疑似为本工具集自身的_install_生命周期任务故不必配置命令行脚本: boolean; }}
* @returns {{ 理想的文件夹之完整路径: string; 未成功: boolean; 疑似为本工具集自身的_install_生命周期任务故不必配置命令行脚本: boolean; 找到的_node_modules_之个数: number; 失败之原因: string; }}
*/

@@ -172,2 +172,7 @@ function 探测采用本工具集的_npm_项目的根文件夹路径 ({

}
console.debug(`\n\n${
本函数之一切消息之前缀
}\n 某路径为真实存在的文件`, 确为文件, `"${待检验的路径}"`)
return 确为文件

@@ -189,2 +194,3 @@ }

失败之原因: '',
找到的_node_modules_之个数: 0,
}

@@ -226,11 +232,26 @@

const 在最顶层_node_modules_之上的各路径片段 = []
const 自顶而下找到了一个_node_modules = 各路径片段之列表.some(路径片段 => {
let 找到的_node_modules_之个数 = 0
各路径片段之列表.forEach(路径片段 => {
if (路径片段 === 'node_modules') {
return true
找到的_node_modules_之个数++
return
}
在最顶层_node_modules_之上的各路径片段.push(路径片段)
if (找到的_node_modules_之个数 === 0) {
在最顶层_node_modules_之上的各路径片段.push(路径片段)
}
})
if (!自顶而下找到了一个_node_modules) {
console.debug(`\n\n${
本函数之一切消息之前缀
}\n 找到的_node_modules_之个数`, 找到的_node_modules_之个数)
console.debug(`\n\n${
本函数之一切消息之前缀
}\n 在最顶层_node_modules_之上的各路径片段`, 在最顶层_node_modules_之上的各路径片段)
返回值.找到的_node_modules_之个数 = 找到的_node_modules_之个数
if (找到的_node_modules_之个数 === 0) {
console.log(`\n\n${

@@ -245,2 +266,11 @@ 本函数之一切消息之前缀

return 返回值
} else if (找到的_node_modules_之个数 > 1) {
console.log(`\n\n${
本函数之一切消息之前缀
}\n ${
粉笔工具.yellow(`探测之起点所有的上层诸文件夹中不止一个名为 “${粉笔工具.white('node_modules')}”。`)
}`)
返回值.失败之原因 = '探测之起点所有的上层诸文件夹中不止一个名为“node_modules”。'
return 返回值
}

@@ -247,0 +277,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc