1. npm link 介绍

创建一个全局的符号链接,优点是方便我们进行本地node模块的开发调用,和后期发布私服,或者npm 仓库调用是一致的

以下为官方的说明:

First, npm link in a package folder will create a symlink in the global folder {prefix}/lib/node_modules/<package>
that links to the package where the npm link command was executed. (see npm-config for the value of prefix). It will
also link any bins in the package to {prefix}/bin/{name}.
Next, in some other location, npm link package-name will create a symbolic link from globally-installed package-name
to node_modules/ of the current folder.
Note that package-name is taken from package.json, not from directory name.
 
 
2. 简单例子
a.创建目录

mkdir  userlogin  usermodule

b.初始化项目

cd usermodule

yarn init -y
yarn add shortid
touch index.js
const shortid = require("shortid");
module.exports={
name:"dalong",
age:33,
id:shortid.generate()
}
package.json {
"name": "usermodule",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"shortid": "^2.2.8"
}
} cd userlogin
yarn init -y
touch app.js
const usermodule =require("usermodule");
console.log(usermodule)
package.json {
"name": "userlogin",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"shortid": "^1.0.0"
},
"scripts": {
"run":"node app"
}
} 项目结构如下: ├── userlogin
│ ├── app.js
│ └── package.json
└── usermodule
├── index.js
├── package.json
└── yarn.lock
 
3. 运行代码
一般来说没有发布的模块我们是没法直接使用的,比如上面的代码,我们直接运行会有错误
yarn run run
yarn run v1.3.2
$ node app
module.js:538
throw err;
^ Error: Cannot find module 'usermodule'
at Function.Module._resolveFilename (module.js:536:15)
at Function.Module._load (module.js:466:25)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/Users/dalong/mylearning/nodelinkdemo/userlogin/app.js:1:81)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
具体的解决方法:
* 发布到私有或者官方仓库
* 使用npm link
以下指演示使用link 的方法
在 usermodule 的目录外边执行 npm link usermodule(此名称为package的名称,不是目录的名称)
再次进入 userlogin 执行 yarn run run
结果如下:
yarn run v1.3.2
$ node app
{ name: 'dalong', age: 33, id: 'SkZN0OjYG' }
结果如下:
4. 参考资料
https://docs.npmjs.com/cli/link
 
 
 
 
 

使用npm link 创建本地模块的更多相关文章

  1. npm link 安装本地模块,将本地模块cli化

    第三方学习地址 http://mp.weixin.qq.com/s?__biz=MzAxMTU0NTc4Nw==&mid=2661157390&idx=1&sn=6d96e54 ...

  2. npm link 命令解析

    文字转的 对开发者而言,这算是最有价值的命令.假设我们开发了一个模块叫 test ,然后我们在 test-example 里引用这个模块 ,每次 test 模块的变动我们都需要反映到 test-exa ...

  3. npm 模块开发调试技巧之最优方案npm link

    在我们平时写项目中,当我们需要新开发或修改的 npm 模块时,如何在本地项目中调试呢? 本地项目路径:G:\npm\project 开发的模块路径:G:\npm\model 方法一: 在cmd命令窗口 ...

  4. npm link中文文档

    Symlink(符号链接)一个package文件夹. 概括 npm link (in package dir) npm link [<@scope>/]<pkg>[@<v ...

  5. npm link用法总结

    npm link用来在本地项目和本地npm模块之间建立连接,可以在本地进行模块测试 具体用法: 1. 项目和模块在同一个目录下,可以使用相对路径 npm link ../module 2. 项目和模块 ...

  6. docker 创建本地镜像服务器

    1.docker pull registry //下载registry 镜像,registry 为docker 官方提供的一个镜像, 我们可以用它来创建本地的docker私有仓库. docker:/r ...

  7. maven安装与创建多模块项目

    最新版已同步至 http://yywang.info/2014/05/31/maven-install-and-create-project/ maven是一个比较流行的项目管理工具,在最近参与的项目 ...

  8. Odoo创建基础模块和相关内容

    Odoo创建模块 这里我先引用一下几篇文章,这里完整的实现了一个odoo的模块创建demo https://segmentfault.com/a/1190000014047552 https://se ...

  9. 基于maven使用IDEA创建多模块项目

    原文地址:http://blog.csdn.net/williamhappy/article/details/54376855 鉴于最近学习一个分布式项目的开发,讲一下关于使用IntelliJ IDE ...

随机推荐

  1. spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClassNameHandlerMapping

    spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClas ...

  2. Cookie和Session的工作原理及比较

    一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...

  3. bzoj1001平面图最小割转对偶图最短路

    https://www.lydsy.com/JudgeOnline/problem.php?id=1001 很明显的求对偶图的最短路即可(由于特判写错了一直wa = = ) //#pragma com ...

  4. torch Tensor学习:切片操作

    torch Tensor学习:切片操作 torch Tensor Slice 一直使用的是matlab处理矩阵,想从matlab转到lua+torch上,然而在matrix处理上遇到了好多类型不匹配问 ...

  5. HDU 4417 BIT or ST

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. UVALive-3523 Knights of the Round Table (双连通分量+二分图匹配)

    题目大意:有n个骑士要在圆桌上开会,但是相互憎恶的两个骑士不能相邻,现在已知骑士们之间的憎恶关系,问有几个骑士一定不能参加会议.参会骑士至少有3个且有奇数个. 题目分析:在可以相邻的骑士之间连一条无向 ...

  7. su | sudo su | sudo -i

    su <user> <user> <user> 需要输入user的密码,该命令改变user id,执行过后,以<user>中定义的用户运行shell,就 ...

  8. superset dashboard 设置自动刷新

    因为发现了,自己制作了看板dashboard,却不会刷新,很奇怪. 那这样不是太傻了.难道要业务人员一个个去点吗? 一定有刷新的,然后和无头苍蝇在网上找了半天. 实际刷新的位置在这里. 具体设置有很多 ...

  9. bzoj3600

    题解: 好像是什么替罪羊树 然后看了几个题解 然后就抄了一边 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,rt,R ...

  10. FCT test device