先了解一下脚手架研发、发布、安装、调试发大致流程:
- 本地研发,具体研发过程略
- 当前目录下登录npm npm login
- 发布脚手架 npm publish
- 安装脚手架 npm i -g xxxx(win系统会在系统盘的nodejs文件夹下自动添加脚手架执行命令和执行文件)
- 执行脚手架命令,没问题的话说明整个流程走通了
- 本地调试脚手架,有以下两种方法:
一、需要修改安装过的脚手架的执行文件(可以认为是软链接,因为win和mac系统不一样,mac系统是有具体的软链接地址指向,win只有执行文件,执行文件里才会指定具体的执行地址)
调试本地正在研发的脚手架,可以通过命令 where.exe ‘脚手架名称’ 找到脚手架执行文件所在位置(where命令的使用可参考这里),修改文件里的执行路径,比如:
我做的一个测试:
安装过脚手架之后,执行命令和执行文件所在位置如下:
要修改的文件是 .ps1;
文件里有这样的代码: “$basedir/node_modules/scaf-test/bin/index.js”,
意思是:去执行当前目录下node包里对应脚手架里的文件
我当前目录是nodejs,里面确实有一个node_modules文件夹,node包里面也确实有安装过的脚手架,所以指向这里
将 “$basedir/node_modules/scaf-test/bin/index.js” 都修改为 ‘你的脚手架可执行文件在本机的路径’ (‘D:\xxx\xxx\xxx\index.js’)就可以随时调试本地脚手架了
二、先将安装过的脚手架删除 npm uninstall -g scaf-test ,然后在本地脚手架项目根目录执行命令 npm link ,同样会在全局安装scaf-test脚手架的node包,安装的位置和方法一里的位置一致,此时修改本地正在研发的脚手架文件,然后再去终端执行脚手架命令,会发现打印出来的的结果和本地文件是一致的,说明执行命令的时候确实是指向本地文件的。
顺着这个思路我认为 .ps1 文件里的执行路径一定也是指向本地路径的,所以打开看了一下,出乎意料的是并没有按照我想的发展,路径依然是 “$basedir/node_modules/scaf-test/bin/index.js”,意思是:去执行当前目录下node包里对应脚手架里的文件。
截止现在,我很疑惑为什么执行路径不是本地脚手架文件,但是却可以打印出和本地脚手架文件一样的内容,随便修改都可以打印出来修改后的结果,于是打开当前目录下node包里对应的脚手架(这是通过 npm link 命令安装的)文件,发现里面的内容和我修改后的是一致的。
到这里,我猜想在执行 npm link 命令的时候,程序自动将本地文件和node包里的文件做了关联或者引用(个人认为:这个关联或者引用和软链接应该是有着本质区别的),修改本地文件会同步修改node包里的文件,于是做了多次试验,也验证了我的猜想。
更深一步的猜想,如果修改node包里的文件会不会同步修改本地文件内???答案是肯定的,也做了多次试验,同样验证了这个猜想。文章来源:https://www.toymoban.com/news/detail-476021.html
至于程序是怎么将两个文件进行关联并同步内容的,这块放后面再说,先做一个猜想:node本就具有强大的fs模块,可以做到文件的增删改查功能,也许是通过这里实现也说不定???文章来源地址https://www.toymoban.com/news/detail-476021.html
到了这里,关于win系统将脚手架的软链接指向本地脚手架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!