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

node_modules .bin文件夹下的文件的更多相关文章

  1. 利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下

    背景是这样的:网站一开始访问量比较小,大家就把所有的图片文件上传到一个目录下(比如是/data/images/).后来访问量大了,图片也多了,这样就影响读取效率.所以有个这样的需求,把这些个图片文件移 ...

  2. C#遍历文件夹下所有文件

    FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...

  3. python 替换 文件夹下的 文件名称 及 文件内容

    示例效果: 1.替换某文件夹下的 文件夹及子文件夹 的名称 由OldStrDir 变为 NewStrDir: 2.替换某文件夹下的 文件夹及子文件夹 下 所有的文件的名称 由OldStrFile 变为 ...

  4. java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面

    将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...

  5. 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序

    1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...

  6. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  7. python (9)统计文件夹下的所有文件夹数目、统计文件夹下所有文件数目、遍历文件夹下的文件

    命令:os 用到的:os.walk   os.listdir 写的爬虫爬的数据,但是又不知道进行到哪了,于是就写了个脚本来统计文件的个数 #统计 /home/dir/ 下的文件夹个数 import o ...

  8. PHP遍历文件夹下的文件和获取到input name的值

    <?php$dir = dirname(__FILE__); //要遍历的目录名字 ->当前文件所在的文件夹//$dir='D:\PHP\wamp\www\admin\hosts\admi ...

  9. java中File类应用:遍历文件夹下所有文件

    练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件; import java.io.File; public class Test { public ...

  10. 【转】【Linux】Linux下统计当前文件夹下的文件个数、目录个数

    [转][Linux]Linux下统计当前文件夹下的文件个数.目录个数 统计当前文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l 统计文件夹下目录的 ...

随机推荐

  1. 日语能力考试N2级核心词汇必备—接续词

    日语能力考试N2级核心词汇必备—接续词 顺接 だから 因为......所以......(下文可用命令,意志劝诱等)その結果  其结果(口语,书面语都行,但是比较生硬)したがって  从而,因而(书面语, ...

  2. 【微信小程序】图片压缩-纯质量压缩,非长宽裁剪压缩

      原理:利用canvas来实现,将图片绘制到canvas上,然后canvas转图片时,微信提供的一个方法wx.canvasToTempFilePath(Object object, Object t ...

  3. nasm

    sudo apt install nasm 64bit: nasm -f elf64 test.asm ld -s -o test test.o --------------------------- ...

  4. 清北学堂提高突破营游记day2

    先水了一下昨天没讲完的贪心. 然后今天讲的分治. 安利自己水的二分与三分. 二分一定要满足有序.三分适合解决单峰函数问题. 第一道题借教室.运用差分和二分查找. 三分: P1731 [NOI1999] ...

  5. python绘制国际象棋棋盘核心代码

    import turtle step = 40 for i in range(8): for j in range(8): turtle.penup() turtle.goto(i*step, j*s ...

  6. Linux系统中的硬件问题如何排查?(1)

    在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工作,即使是经验相当丰富的用户有时也会遇上自己搞不定的状况,本文分享一些实用的技巧与处理方法,希望有助于读者朋友理解.查明并最终搞 ...

  7. 微信小程序-饮食日志_开发记录01

    今天主要了解微信小程序的框架结构以及环境部署等. 小程序的框架主要分为: js.json.wxss.wxml等 和java web的内容相似,主要了解内部代码的使用情况和语言方式. 主要写了页面的框架 ...

  8. formant

    1.函数功能将一个数值进行格式化显示. 2. 如果参数format_spec未提供,则和调用str(value)效果相同,转换成字符串格式化. >>> format(3.141593 ...

  9. print的位置差异

    第一种,for循环和print是同级的,只有当for循环结束了才会print d=[]for i in range(1, 101): d.append(i)print d[6::7] 第二种,也就是p ...

  10. ES和RDBMS区别

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/12090637.html ES7.0之前,一个Index可以设置多个Type ES7.0开始,Type已 ...