-
-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
你所不知道的模块调试技巧 - npm link #17
Comments
👍,当年修改 node_modules 后发布了一次导致 node_modules 里面的代码直接没了给我留下了 深刻 的记忆 😂 |
问题是一个项目里面被 flatten 出来几千个目录,你就算开个软连,编辑器里面展开 node_modules 目录也会被卡死。 |
@XadillaX 这个跟 link 关系不大,是 npm@2,npm@3,cnpm 的包安装方式区别导致的吧。 这是编辑器的问题,很容易解决的,vscode 和 webstorm 配置几个 ignore 就 ok 了。(局部 ignore,不用全部屏蔽整个 node_modules) |
@atian25 为什么大家都喜欢把 NPM 自身机制问题总要归结到编辑器问题上去呢 -。 - |
呀, 感觉如果是用 |
那,如果我的js插件直接放到项目目录下呢 |
@lightWey 然后你的问题是? |
🤔 我居然每次都 npm install path/to/my-project --save 一次,没有想到用 link... |
有一个模块,开始是直接通过npm install gitlab地址,运行项目没错,但是在本地,我通过npm link之后,运行就出错了, |
@sunlandong 这种反馈对交流是没有任何帮助的,出什么错?错误信息是啥?复现步骤是啥?挤牙膏似的交流是最没效率的。 |
你好,我目前也是需要把一些基础的vue组件分离出去单独做一个npm的包,试了 请问有没有类似vue/react组件本地开发流程的经验分享?谢谢啦 |
应该没区别的,
|
是否每次 |
link 只是用于调试用的。 |
好吧,我本来以为能解决自己维护 |
既然提到了ln,那还是直接ln -s吧?跟ln有什么区别? |
|
大神你好,我这里遇到一个问题,npm install 之后,在node_modules/.bin/ 里面没有创建软连接,都是硬链。(node V8.4.0 npm V5.3.0)这个情况是在 生成环境打包时候发现的,本地和测试环境都没问题,我还尝试过,把生成打的包下载之后,删除node_modules 和 package-lock.json文件,然后本地npm install,这样生成.bin文件夹里会自动创建软链。所以 请问一下大神,有没有碰到过这样的情况,npm 在什么情况下不会自动创建软链的? |
没遇过。 |
@llsldwy 你那个问题很大可能是你打包的问题, tar 或 zip 的时候多了一个参数 |
你好 ,有个问题,我在npmlink后,不能彼此共享node_modules,执行脚本的时候找不到安装依赖 |
@sunha1yang 啥叫共享 node_modules? |
sorry, 我表述上有点问题,我要测试pkg有一些依赖,如webpack等第三方包,我在另一个文件夹(此文件夹下有node_modules文件,pkgName需要的依赖包都存在)下npm link pkgName后,我的pkg引不到此文件下node_modules文件,然后就会报错,我的问题是如何能让我的pkg能够引到当前文件夹下的node_modules文件? 不知道我有没有表述清楚...... |
楼主你好。我现在遇到一个问题 |
@sunha1yang npm link 会遇到依赖找不到的问题,不是好用(没有问题的话还是尽量使用 npm link) https://medium.com/@vcarl/problems-with-npm-link-and-an-alternative-4dbdd3e66811 |
@brizer 请问这个--preserve-symlinks 是node命令,怎么使用? |
@brizer 我这是一个webpack构建的web项目,比如a依赖b, a和b都依赖vue这个框架,我通过构建a跑在webpack-dev-server上,用chrome打开调试,这个我该如何操作呢 |
在webpack构建的项目中,可以使用resolve-alias字段使用绝对路径强制指定调试时第三框框架的源目录, resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue-router': resolve('node_modules/vue-router'),
vuex: resolve('node_modules/vuex'),
'vue$': resolve('node_modules/vue/dist/vue.esm.js'),
// 'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src')
}
} |
请教一下,如果我的一个项目依赖了A组件,A模块又依赖了B组件,那么我如果要在项目中调试B组件,应该怎么快速的link? |
cd a/node_modules && npm link c |
这里有另一种方式,我们在项目里经常用到,就是直接通过 npm 的 {
"dependencies": {
"element-react-dataview": "file:lib/element-react-dataview"
}
} 项目目录下运行 这其实也是另一种形式的 |
lerna |
学到了,thx |
对npm install指令和npm link指令更加理解了。 |
1.通过 |
可能是 vuecli 对软链的处理不好。 |
找到问题了,需要把webpack配置中的 |
wml这个才是最屌的,因为React Native 不支持 npm link,https://www.bram.us/2018/03/10/working-with-symlinked-packages-in-react-native/ |
Metro 不支持跟随软链: facebook/metro#1 |
npm link贼好用 |
💥就是这个害我浪费了半天时间 |
我发现 1.2 相对路径安装 修改代码后不需要重新 install 呀 |
在引用的项目中使用安装插件导致被引用的插件废掉,被引用的模块需要清理掉node_modules重新安装才能成功启动 |
npm yarn pnpm 这三个的 link 都是互通的吗? 我在组件库使用:
项目中使用:
版本:
|
不要混用包管理器 |
这玩意是我可以左右的吗🙈🙈, |
组件库 |
1. 背景
node 应用开发中,我们不可避免的需要使用或拆分为 npm 模块,经常遇到的一个问题是:
新同学一般会有以下几种方式:
为了方便示范,我们假设项目是
my-project
, 需要用到一个独立的my-utils
模块1.1 发布一个 beta 版本
1.2 直接用相对路径安装
$ cd path/to/my-project $ npm install path/to/my-utils
1.3 使用软链
$ cd path/to/my-project/node_modules $ ln -s path/to/my-utils my-utils
2. 正解 - npm link
但其实 npm 本身已经对此类情况提供了专门的
npm link
指令。相关文档: https://docs.npmjs.com/cli/link
下面我们简单介绍下用法:
$ cd path/to/my-project $ npm link path/to/my-utils
简单的替换一个单词,就搞定了,cool~
如果这两种的目录不在一起,那还有一种方法:
该指令还可以用来调试 node cli 模块,譬如需要本地调试我们的 egg-init,可以这样:
想去掉 link 也很简单:
3. 写在最后
The text was updated successfully, but these errors were encountered: