我是靠谱客的博主 忧心西装,最近开发中收集的这篇文章主要介绍js写入文件到本地_nvm在windows下的实现机制 —— 既是文件夹又是超链接的symlinks...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

nvm是一个node版本管理工具,安装了nvm之后,可以通过nvm安装不同的node版本,随时切换。

nvm的实现机制说起来非常简单,就是对每个node版本建立了单独的文件夹,存放了不同的node.exe,要使用某个版本的node,就用一个超链接指向这个node文件夹,最后在环境变量里写入这个超链接。这样在命令行里运行node的时候,就会从NVM_SYMLINK环境变量里找到对应版本的node.exe。

354508a84b4f35cfa5fde16d06bfaa26.png

5ffb296ffdd099d34833ca8cabd6f5dc.png

这句话很简单,但是其实里面有个问题,如果你自己去试一试,就会发现这个NVM创建的这个超链接好像有点不太对劲,不是正常的右击——新建超链接,因为正常的超链接类型是快捷方式(.lnk),而nvm创建的快捷方式类型是文件夹。

a2eb6606828521e92b5228b4b99e7d54.png

17b266c636708af0c93cfae374e341bd.png

e9d4d28980223b562b114f5ea9227f0c.png

所以这里我产生了一个疑问,一个文件夹是怎么做到同时还是超链接的???

73fc5f2f318a40bd46962486d84e90f1.png

我稍微研究了一下,发现 创建的超链接是symlinks,它是指向 单个文件或文件夹的符号链接,该链接看起来与Windows的文件或文件夹相同

创建的symlinks的命令是:

mklink 

详细的解释见:https://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/

于是我做了一个小实验,用于检测npm是否认可symlinks作为node_modules文件夹,具体步骤如下:

  1. 在某个文件夹下创建了 index.js,主要作用就是引用了一个需要install的npm包,用于检测包是否成功被引用。同时进行npm init,在package.json中写入依赖的包。
//index.js
{
  "name": "learn_symlinks",
  "version": "1.0.0",
  "description": "Understand the working mechanism of symlinks.r 1. node mklink.jsr 2. npm installr 3. node index.jsr You'll see the symlinks of node_modules, and understande how it works.",
  "main": "index.js",
  "dependencies": {
    "spark-md5": "^3.0.1"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Lynn93/learn_symlinks.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/Lynn93/learn_symlinks/issues"
  },
  "homepage": "https://github.com/Lynn93/learn_symlinks#readme"
}

2. 创建了一个node_modules_win文件夹,同时创建了一个mklink.js,这个js可以创建一个名为node_modules的symlinks。

d4dbed46fa78c0efd43ca9e860e7e40f.png
//mklink.js 用于创建symlinks
var exec = require("child_process").exec;
var cmd = 'mklink /D "D:work2020learn_symlinksnode_modules" "D:work2020learn_symlinksnode_modules_win"';
exec(cmd,{
	maxBuffer: 1024 * 2000
}, function(err, stdout, stderr) {
        //...
});

3. 执行 mklinks.js,成功创建symlinks

ba60ecddb7639a1930522d32e6b24589.png

d5da502ef094f8446d210ab1994c27e5.png

4. 执行 npm install,发现依赖包成功创建到 symlinks文件夹下

50661b184110df6cc403aee59aae0690.png

5. 运行 index.js,成功。

26cc886968e57a162704b96939681c40.png

至此,可以证明npm不管是安装阶段还是运行阶段,都认可symlinks形态的node_modules。

完整代码见:https://github.com/Lynn93/learn_symlinks

因此,我可以借鉴nvm的机制,实现本地docker环境内外的node_modules快速切换。

最后

以上就是忧心西装为你收集整理的js写入文件到本地_nvm在windows下的实现机制 —— 既是文件夹又是超链接的symlinks...的全部内容,希望文章能够帮你解决js写入文件到本地_nvm在windows下的实现机制 —— 既是文件夹又是超链接的symlinks...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部