# my-trusted-test **Repository Path**: evan_origin_admin/my-trusted-test ## Basic Information - **Project Name**: my-trusted-test - **Description**: my-trusted-test 是一个颜色 npm 包 生命周期的各个阶段执行 npm 生命周期脚本。npm script 是如何触发这些生命周期事件的? - **Primary Language**: JavaScript - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-10 - **Last Updated**: 2024-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## my-trusted-test `my-trusted-test` 是一个颜色 npm 包 生命周期的各个阶段执行 npm 生命周期脚本。npm script 是如何触发这些生命周期事件的? **Scripts 生命周期:**
此软件包包含以下npm生命周期脚本:
- preinstall:在软件包安装开始之前触发。
```"preinstall": "echo 'Trust preinstalling!' # (Running preinstall script)"``` - postinstall:在安装软件包后立即触发。 ```"postinstall": "echo 'Trust Installed!' # (Running postinstall script)"``` - preuninstall:在卸载软件包之前触发。 ```"preuninstall": "echo 'Trust preuninstalling!' # (Running preuninstall script)"``` - postuninstall:卸载软件包后触发。 ```"postuninstall": "echo 'Trust postuninstalling!' # (Running postuninstall script)"``` - prepare:在两种情况下触发:在本地安装软件包后(而不是通过注册表)和软件包打包和发布之前(例如,在npm publish或npm pack期间)。 ```"prepare": "echo 'Preparing Trust!' # (Running prepare script)"``` ## 安装使用 ### `--foreground-scripts`: 查看脚本执行情况和输出日志; 在 `npm 7` 以上的版本使用,出于安全考虑在前台控制台中,可能不会输出脚本执行日志,所以需要使用命令标识 `--foreground-scripts` 方便在前台的控制台中观察执行情况和输出日志。
```npm i --foreground-scripts my-trusted-test``` ### `--ignore-scripts`:忽略scripts生命脚本执行; ```npm install --foreground-scripts --ignore-scripts my-trusted-test``` ## 禁止运行scripts的生命周期脚本的重要醒 在 npm 的包中,发现了很多恶意软件都是利用了 install scripts 的特性,这些脚本通常在未经过用户确认的情况下执行的。 因此**允许 install scripts 可能会带来一些风险。** - 修改和窃取数据: 可以利用 scripts 中的生命周期更改或者窃取用户可访问的文件; - 安装恶意软件:利用 scripts 中的生命周期特性,可以在未经过用户同意的情况下下载和安装其他恶意软件包或软件; - 未经授权访问系统资源: 利用 scripts 中的生命周期特性,可以利用 npm 的安装功能来执行一些恶意操作,例如访问系统资源、修改系统配置等。 ## 建议 - 在安装软件包的使用使用 `--ignore-scripts`: 这个命令选项可以避免 npm 执行安装脚本,从而避免可能存在的恶意软件。 ```npm install --ignore-scripts XXX``` - 继续禁用脚本: 可以在 `.npmrc ` 文件中设置全局配置,以始终放置在npm安装期间执行脚本。 ``` ignore-scripts=true```