node_modules .bin文件夹下的文件

node_modues/.bin文件夹下,对于一个npm包,有两个可执行文件,没有后缀名的是是对应unix系的shell脚本,.cmd文件对应的是windows bat脚本,内容都是用node执行一个js文件

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\webpack\bin\webpack.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\..\webpack\bin\webpack.js" %*
)

这里是windows的cmd中的语法 ~dp0指执行脚本的当前目录 这句话的意思是如果当前目录下有node.exe,就用node.exe执行... ...webpack.js文件 %*是指执行bat时命令中输入的后续参数 否则 @SETLOCAL设置本次批处理命令中的环境变量 PATHEXT是windows下的文件扩展名环境变量 后面的语法是从PATHEXT中删除.JS 然后执行 node ... ... webpack.js 命令, 去除掉扩展名的作用是为了防止执行到node.js文件 比如当前文件夹下有一个node.js文件, 如果直接执行node命令可能会默认用vscode打开这个.js文件

 

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setlocal

https://stackoverflow.com/questions/112055/what-does-d0-mean-in-a-windows-batch-file

 

 

另一个不带.cmd结尾的是为unix系统准备的:

 

#!/bin/sh

# $()  https://www.cnblogs.com/chengd/p/7803664.html 做命令替换的
# sed  https://www.runoob.com/linux/linux-comm-sed.html    https://stackoverflow.com/questions/38934138/what-result-do-sed-s-g-and-egrep-example-variablename-give
# $0   https://unix.stackexchange.com/questions/280454/what-is-the-meaning-of-0-in-the-bash-shell
 

# 获取当前执行bash的dirname( strip last component from file name ),命名为basedir这个变量
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
 

# 如果uname 以 *开头 中间有CYGWIN后面有*结束  basedir是 cygpath -w "$basedir"
# cygpath -w 是以windows风格路径分割符处理$basedir
# case...in...esac语法 http://c.biancheng.net/view/2767.html
case `uname` in
    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac

# if[]...then...else...fi语法 https://blog.csdn.net/puqutogether/article/details/45815003
# $@ 代表所有参数 https://superuser.com/questions/694501/what-does-mean-as-a-bash-script-function-parameter
# $?代表最近执行的返回值 https://unix.stackexchange.com/questions/7704/what-is-the-meaning-of-in-a-shell-script
# -x 如果后面文件存在是true http://man7.org/linux/man-pages/man1/dash.1.html (-x file)
if [ -x "$basedir/node" ]; then
  "$basedir/node"  "$basedir/../webpack/bin/webpack.js" "$@"
  ret=$?
else 
  node  "$basedir/../webpack/bin/webpack.js" "$@"
  ret=$?
fi

exit $ret

转载于:https://www.cnblogs.com/eret9616/p/11512575.html

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. npm verb cli D:\JavaTools\node-v16.16.0-win-x64\node.exe D:\JavaTools\node-v16.16.0-win-x64\node_global\node_modules\npm\bin\npm-cli.js npm info using npm@9.8.0 npm info using node@v16.16.0 npm verb title npm install npm verb argv "install" "--loglevel" "verbose" npm verb logfile logs-max:10 dir:D:\JavaTools\node-v16.16.0-win-x64\node_cache\_logs\2023-07-16T03_12_06_268Z- npm verb logfile D:\JavaTools\node-v16.16.0-win-x64\node_cache\_logs\2023-07-16T03_12_06_268Z-debug-0.log npm verb shrinkwrap failed to load node_modules/.package-lock.json out of date, updated: node_modules npm verb stack Error: EBUSY: resource busy or locked, rename 'D:\vue-code\PISPlanning3\node_modules\imagemin-jpegtran\node_modules\jpegtran-bin' -> 'D:\vue-code\PISPlanning3\node_modules\.imagemin-jpegtran-PSMG5ifG\node_modules\jpegtran-bin' npm verb cwd D:\vue-code\PISPlanning3 npm verb Windows_NT 10.0.19045 npm verb node v16.16.0 npm verb npm v9.8.0 npm ERR! code EBUSY npm ERR! syscall rename npm ERR! path D:\vue-code\PISPlanning3\node_modules\imagemin-jpegtran\node_modules\jpegtran-bin npm ERR! dest D:\vue-code\PISPlanning3\node_modules\.imagemin-jpegtran-PSMG5ifG\node_modules\jpegtran-bin npm ERR! errno -4082 npm ERR! EBUSY: resource busy or locked, rename 'D:\vue-code\PISPlanning3\node_modules\imagemin-jpegtran\node_modules\jpegtran-bin' -> 'D:\vue-code\PISPlanning3\node_modules\.imagemin-jpegtran-PSMG5ifG\node_modules\jpegtran-bin' npm verb exit -4082 npm verb unfinished npm timer reify 1689477126779 npm verb unfinished npm timer reify:retireShallow 1689477127193 npm verb code -4082 npm ERR! A complete log of this run can be found in: D:\JavaTools\node-v16.16.0-win-x64\node_cache\_logs\2023-07-16T03_12_06_268Z-debug-0.log
最新发布
07-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值