NPM预安装脚本

我试图在安装任何软件包之前运行一些策略脚本。 例如:

{ "name": "pre-hook-check", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "preinstall": "echo preinstall", "postinstall": "echo postinstall" }, "author": "", "license": "ISC", "dependencies": { "abc": "^0.6.1", "preact": "^8.2.5" } } 

上面的例子中的前后安装脚本似乎只有当我做npm install ,但我希望这每次我尝试安装任何东西时运行。

例如:假设我想编写一个脚本来检查包的版本,只要我的团队运行npm install <some package> 。 我想检查安装包的版本,并确认它的版本是在“1.0.0”以上,否则不要让它们安装。

我打算写一个预安装脚本

npm info lodash version

并检查我试图安装的任何软件包的版本。 如果版本不可用,我打算让它交互并在安装之前询问用户的确认。

你是正确的预安装脚本只有当我们做npm安装运行,目前没有办法在安装模块之前运行脚本,但你可以使用shell脚本npm视图 https://docs.npmjs.com/cli/view这样&#x505A; 。

首先,创build一个与你的package.json具有相同作用域的moduleinstall.sh文件,以及下面的shell脚本

 echo 'Enter the name of the module' read module_name npm view $module_name version echo "Do you want to install this version(y/N) " read option if [ "$option" = "N" ] || [ "$option" = "n" ] then echo "exiting...." exit 1 else npm install $module_name fi 

请确保使用chmod +x moduleinstall.sh使其可执行,然后将其写入package.json中

 "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "info": "./moduleinstall.sh" } 

现在你只需要运行命令npm run info ,然后按照说明通过检查版本来安装模块。 您可以使用npm视图和shell脚本的不同选项来改进它。 希望这可以帮助。