建设银行招生网站,网站建设专员,电子商务网站建设 代码,网站的icon图标做多大正文npm link的用法假如我们想自己开发一个依赖包#xff0c;以便在多个项目中使用。一种可行的方法#xff0c;也是npm给我们提供的标准做法#xff0c;那就是我们独立开发好这个 依赖包#xff0c;然后将它直接发布到 npm镜像站 上去#xff0c;等以后想在其…正文npm link的用法假如我们想自己开发一个依赖包以便在多个项目中使用。一种可行的方法也是npm给我们提供的标准做法那就是我们独立开发好这个 依赖包然后将它直接发布到 npm镜像站 上去等以后想在其他项目中使用的时候直接npm install moduleName。但是如果我们修改了这个依赖包的源码就要重新发布到npm镜像站这样做相对来说会有一点麻烦。我们希望有更方便一点的办法npm link就是这样的一个简便方案。那么npm link是怎么用的呢下面我会用一个例子来说明npm link的用法。示例项目npm-link-test我们创建一个名为npm-link-test的项目整个项目的目录结构如下图所示。其中allenModule95是一个用来为其他项目提供支持的依赖本项目真正的代码都放在myProject目录下。第一步创建allenModule95依赖项目。首先在allenModule95下运行npm init命令这会在allenModule95下生成package.json文件。其次我们再在allenModule95目录下编写index.js文件//index.js
module.exports {name: allenModule95,sayHello: function(){console.log(hello allenModule95);}
}第二步创建本项目真正的代码。首先切换到myProject目录下新建一个demo.js文件//demo.js
var myModule require(allenModule95);
console.log(myModule.name);
myModule.sayHello();其次在终端窗口中运行这个demo.js, 运行命令: node demo.js。但是这时候node会报错。具体错误信息如下图所示错误信息显示“MODULE_NOT_FOUND”这就是说demo.js文件中依赖的allenModule95模块找不到。出现这个错误是因为此时的require的搜寻目录中没有包含此模块所以require就找不到这个模块。用npm link解决这个问题为了上面allenModule95模块能够被正确搜寻到npm link可以上场了。切换到allenModule95目录下并执行npm link 命令注意这个npm link不加任何参数。这个命令的作用是在全局环境下也就是nodejs安装目录下的node_modules目录下生成一个符号链接文件在windows下就是创建一个快捷方式文件该文件的名字就是allenModule95目录下package.json文件中指定的模块名。因为它是一个快捷方式所以当我们在allenModule95下修改了什么东西都会被全局的符号连接文件下面看到。接下来切换到myProject目录下将allenModule95模块与此项目连接起来执行npm link allenModule95就可以完成它们的连接。此时我们就可以正确执行node demo.js了。详细执行过程见下图使用同样的方法我们可以在任何其他目录下使用allenModule95模块并且即使allenModule95模块有所改动这个改动也会被其他模块同步知道不需要我们像制作标准npm模块那样重新发布模块到镜像站点。如果想解除某个项目与allenModule95的依赖关系则可以在项目目录下执行npm unlink allenModule95这样它们之间的连接关系就解除了。如果想要从全局环境中移除allenModule95模块链接则可以allenModule95模块根目录下执行npm unlink allenModule95这样就从全局环境中解除了allenModule95的连接。这就是npm link命令的基本使用方法。npm link在当前项目中使用全局安装的模块上面的例子中npm link用来使用自己开发模块可是更多的时候我们是在使用npm的模块仓库即npm registry中的模块这时候也可以使用npm link命令。比如我们要开发很多应用每个应用都用到 Coffee-script模块 第一步我们将coffee-script安装到全局模式下。npm install coffee-script -g # 全局模式下安装coffee-script第二步在每一个要开发的应用中连接全局安装的coffee-script。cd ~/work/node/test1 # 进入开发目录npm link coffee-script # 把全局模式的coffee-script模块链接到本地的node_modules下cd ../test2 # 进入另外的一个开发目录npm link coffee-script # 把全局模式的coffee-script模块链接到本地npm update coffee-script -g # 更新全局模式的coffee-script所有link过去的项目同时更新了。读到这里有的人对npm install -g的原理理解不清楚的人可能会有点疑问不是说全局安装的包在每一个项目中都可以用吗为啥这里全局安装了coffee-script在具体的项目中要调用的时候却要npm link呢有这个疑问的朋友应该是对npm install -g的理解有误。npm install -g moduleName是将模块装到全局目录下但是全局方式的安装是供命令行(command line)使用的比如grunt全局安装的模块是没有办法用require调用包的。因为上面要在项目中requre包所以必须先npm link一下。https://www.cnblogs.com/leise/p/15943363.html