每次和电脑直接的交互都是给电脑下达一定的指令,电脑根据指令调用执行相应任务。
(待~~~~)
npm line 方式
一. 操作流程
- 我们在开发的目录下,编写一个最简单的node可执行文件
a.js
12console.log('hello Ryan');
#!/usr/bin/env node
这句很重要,后面解释。
建立package.json文件
123456{"name":"npm-link","bin":{"ryan":"a.js"}}在该文件夹下执行
npm link
可在任意文件夹下运行
ryan
二. 问题就来了
- npm link执行,发生了什么?
- 命令行输入
ryan
,怎么调用的?
第一个问题 npm link执行,发生了什么?
官方解释点这里;
|
|
在开发的目录下执行npm link
,会在npm全局的文件夹根据package.json的描述创建引用文件指向本地
在其他要用到redis
的文件夹下执行npm link redis
,该文件夹
下的node_modules文件夹夹的向redis所在文件的引用文件
npm link的源码文件中的注解说的相当明白:
我在windows环境下相应开发文件夹下执行npm link
npm全局的文件夹
~\AppData\Roaming\npm
目录下多了两个文件:ryan
,ryan.cmd
ryan
是shell编程的脚本ryan.cmd
dos编程的脚本
相应的在全局的node_moudules多一个npm-link的引用文件夹
注: package.json如果不写name属性,会导致node_moudules文件直接是引用文件夹,所以name属性是必须的。
问题就来了为什么生成ryan的文件的?而不是其他的?
这就看npm link 命令都做了什么!
查看文件..\nodejs\node_modules\npm\lib\link.js
linkInstall
:引用链接到linkPkg
:
调用了bulid.js#!/usr/bin/env node
这句注释什么作用?
第二个问题 命令行输入ryan
,怎么调用的?
path