首页
学习
活动
专区
圈层
工具
发布

NPM 7:这才算是真正的更新

core 文件夹也是如此,我们在其中将 Express 声明为其主要共享依赖项: 现在,我们可以从根文件夹运行 npm install,你觉得会发生什么呢?...它将在一个通用的 node_modules 文件夹中安装所有这些工作区所需的所有内容。因此,重复的依赖项不会占用多份空间。...有了这些命令和文件夹结构后,你在根目录级别的 node_modules 文件夹中安装了所有三个模块(及其必需的依赖项)。但是,其层次结构内的任何文件都能访问所有这三个文件。...如果你不太熟悉这个术语(以前我也不熟),这里就简单介绍一下:对等依赖项和普通的依赖项几乎没什么区别,它们并没有定义一个严格的要求,而是声明: 你的软件包与另一个模块的特定版本兼容。...理论上讲这都没什么问题,但如果你要自动安装这些依赖项,那么当你添加两个具有相同依赖项但版本不同的软件包时,两个版本就会同时安装(其中一个位于常规的 node_modules 文件夹中,另一个作为需要它的包的子依赖项

2K30

了解可执行的NPM包

至少看下scripts里边究竟写的是什么咯 :) P.S. npm scripts中不仅仅可以执行NPM模块,普通的shell命令都是支持的 创建工程 首先的第一步,就是你需要有一个文件夹来存放你的NPM...随便创建一个文件夹即可,文件夹的名字也并不会产生太大的影响。 然后需要创建一个package.json文件,可以通过npm init来快速的生成,我个人更喜欢添加-y标识来跳过一些非必填的字段。...node_modules文件夹中才能够正确的引入。...所以这也从侧面说明了为什么webpack可以直接在自己的文件中引用并不存在于自己模块下的依赖。...小结 总结了一下关于NPM可执行的包相关的一些东东,希望能够帮大家简单的理解这是个什么,以及global和local下一些可能会遇到的问题,希望能够让大家绕过这些坑。

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从npm发展历程看pnpm的高效

    ,后面我们会针对npm的发展历史中存在的问题 来对比说明,pnpm的提出动机,pnpm 的优势在哪里,为什么具备这些优势。...node_modules没有C,也能在上层访问到C呢?...缓存没有找到,从registry仓库下载,直接走上面流程; 命中缓存会获取缓存中的压缩文件 将压缩文件解压到node_modules文件夹中; pnpm 综上,基于npm扁平化node_modules...我理解的是window下也是可以使用的,pnpm 已经帮我们做了兼容,只是没有使用软链接的方案。 pnpm 常见问题 为什么使用硬链接? 为什么不直接创建到全局存储的软链接?...node index-s.js 发现找不到模块 因为软链接中的require软链接会从文件原始位置开始查找依赖,a中没有node_modules,直接报错了,但是如果是硬链接则不存在这样的问题 --preserve-symlinks

    2.2K40

    types 和 @types 是什么?

    原因有: 它们大多数没有一个清晰的主线,而是按照 API 组织章节的,内容在**逻辑上**比较零散。 大多是“讲是什么,怎么用“,而不是”讲为什么,讲原理“。 大多数内容比较枯燥,趣味性比较低。...比如配置文件中的 「types 和 typeRoots」,并且还有一个 @types。接触过 TypeScript 的人一定接触过它们, 这几个有什么区别和联系呢?今天就带你来重新认识下它们。...如果你想查一个包是否在 @type 下,可以访问 https://microsoft.github.io/TypeSearch/ 那么 TypeScript 是怎么找定义的,什么情况会找不到定义而报类似上面举的例子的错误...包类型定义的查找 就好像 node 的包查找是先在当前文件夹找 node_modules,在它下找递归找,如果找不到则往上层目录继续找,直到顶部一样, TypeScript 类型查找也是类似的方式。...如果找不到,则会去 node_modules 中的@types (默认情况,目录可以修改,后面会提到)目录下去寻找对应包名的模块声明文件。

    3K20

    npm publish package 测试流程

    上一篇 npm publish package 发布流程 中说了开发的过程,但是对于测试和调试部分并没有过多的去讲述这些事情。...看到这屏幕里带着鲜红颜色的字符你的眉头微微一皱:“为什么 install 下来的代码可以正常使用,反而本地用 link 就出问题了呢?”(嗬~哈~!砸!哇!撸!多!)...注意:当使用符号链接 package 包工具时(如 npm link),可能会导致模块解析失败。...如果你要问 module 和 main 有什么区别的话,我只能说在我实际的调试过程中发现webpack 对 module 的调用优先于对 main 的调用,如果 module 找不到则会使用 main,...最后 有些问题是确实是和错误提示没有太大关系。 官方文档是个好东西,但文档内容不会穷举所有例子和场景,有时感觉会帮不上忙。 踩坑了不可怕,就怕没有正视它。

    1.2K10

    npm 依赖管理中被忽略的那些细节

    package.json 中包的前后顺序对于安装时有什么影响吗?这些问题平时大家可能没有注意过,今天我们就来一起研究一下吧。 A 和 B 同时依赖 C,这个包会被安装在哪里呢?.../node_modules 下的目录将会包含三个子目录: node_modules/ ├─┬ A ├─┬ B ├─┬ C 为什么会出现这样的区别呢?...,造成了大量的冗余;在 windows 系统中,甚至会因为目录的层级太深导致文件的路径过长,触发文件路径不能超过 280 个字符的错误; 为了解决以上问题,npm 3 的 node_modules 目录改成了更为扁平状的层级结构...,尽量把依赖以及依赖的依赖平铺在 node_modules 文件夹下共享使用。...为什么会出现 package-lock.json 呢? 为什么会有 package-lock.json 文件呢?这个我们就要先从 package.json 文件说起了。

    2.8K10

    精读《pnpm》

    经过这三层寻址带来了什么好处呢?为什么是三层,而不是两层或者四层呢?...幻影依赖 幻影依赖是指,项目代码引用的某个包没有直接定义在 package.json 中,而是作为子依赖被某个包顺带安装了。...比如包 bar peer-dependences 依赖了 baz^1.0.0 与 foo^1.0.0,那我们在 Monorepo 环境两个 Packages 下分别安装不同版本的包会如何呢?.../hard.txt,这样创建出来的 hard.txt 文件与 my.txt 都指向同一个文件存储地址,因此无论修改哪个文件,都因为直接修改了原始地址的内容,导致这两个文件内容同时变化。...硬链接如果要指向目录就麻烦多了,第一个问题是这样会导致文件的父目录有歧义,同时还要将所有子文件都创建硬链接,实现复杂度较高,因此 Linux 并没有提供这种能力。

    1.1K20

    带你深入了解NPM——NPM初学者指南

    因此,我将尝试介绍该工具的基础知识,让您更深入地了解并使用它,而不是仅仅了解npm install而已。 包管理 我们都知道你可以使用NPM安装软件包,但究竟是什么意思呢?...请记住,这一点很重要(甚至至关重要),因为当你作为团队中的一份子在工作时,你不会分发,也不会将node_modules文件夹添加到版本控制系统(无论是GIT,SVN还是你正在使用的任何版本管理系统),而只需简单地分享...全局安装的包不会添加到package.json文件中,那么既然不会添加到package.json中,那么为什么要安装全局安装呢?...ci:几乎与npm install用于自动化环境(例如持续集成过程)相同。此命令比此命令更严格,install并确保安装始终是干净的(如果存在,它会自动删除node_modules文件夹)。...help-search / help: 帮助将显示给定术语的文档页面,如果没有找到结果,help-search将对NPM的markdown帮助文件执行全文搜索并显示相关结果列表。

    2K20

    开发中遇到过的 NPM 疑惑解答

    node_modules文件夹下,也会自动生成package-lock.json文件。...为什么有的命令写在package.json中的script中就可以执行,但是通过命令行直接执行就不行? 为什么需要package-lock.json文件?...requires: 对应子依赖的依赖,与依赖包的package.json中dependencies的依赖项相同 dependencies:结构与外层结构相同,存在于包自己的node_modules中的依赖...(不是所有的包都有,当子依赖的依赖版本与根目录的node_modules中的依赖冲突时,才会有) 通过分析上面的package-lock.json文件,也许会有一个问题。...为什么有的包可以被安装在根目录的node_modules中,有的包却只能安装在自己包下面的node_modules中?这就涉及到npm的安装机制。

    1.6K10

    102.精读《Monorepo 的优势》

    毕竟 Lerna 作为 Monorepo 的实现之一也并不尽善尽美,而不同场景对 Monorepo 依赖的原因、功能也有所不同,所以希望借这篇文章,从理论上解释清楚为什么会产生 Monorepo,以及...对于共用的包通过 Npm 安装,如果不能接受调试编译后的代码,或每次 npm link 一下,就没有办法调试依赖的子包。...# 整个项目只有一个外层 node_modules └── package.json # 包含整个项目所有依赖 所有全局配置文件只有一个,这样不会导致 IDE 遇到子文件夹中的配置文件...但由于通用性要求非常高,需要支持任意项目间 Monorepo 的组合,因此在 packages 文件夹下的配置文件还是与独立仓库保持一致,这样在 TS 环境下会造成配置截断的问题。...同时包之间的引用也通过更通用的 symlink 完成,这导致了还是要在子模块目录存在 node_modules 文件夹,而且效果依赖项目初始化命令。

    70510

    抛弃vue-resource拥抱axios

    写了一个简单的get请求,然后用webpack编译的时候有木有发现下面的错误: ? Modules not found, can't resolve '..../package' 什么鬼 意思就是这个模块找不到,为什么找不到呢?我也没主动去装过这个模块呀,难道装其他包的时候有什么错误?或者要我再主动装package模块?...最笨的办法,删除node_modules,重新npm install 试试还会不会出错,ok, npm install 后突然发现下面这个鬼 ? 看当中那团屎黄色的提示。...没有钱换mac咋办了,还有没有其他办法解决package 我是没找到,没办法,vue-resource难道就不能去编译了么,直接引入?...内心大喜哇,终于有希望了,是不是换了axios就可以了呢 赶紧试用下,先删除了文件夹内的vue-resource.min.js源码,然后卸载了对应的npm包,再尝试axios npm install axios

    1.8K50

    2018 年了,你还是只会 npm install 吗?

    首先 node_modules 本身不应该放进版本控制系统,对 node_modules 文件夹中内容的修改不会被记录进 git 提交记录;其次,就算我们非要反模式,把 node_modules 放进版本控制中...虽然使用者无需关注这个目录里的文件夹结构细节,只管在业务代码中引用依赖包即可,但了解 node_modules 的内容可以帮我们更好理解 npm 如何工作,了解从 npm 2 到 npm 5 有哪些变化和改进...但这样的文件结构也有很明显的问题: 对复杂的工程, node_modules 内目录结构可能会太深,导致深层的文件路径过长而触发 windows 文件系统中,文件路径不能超过 260 个字符长的错误...{} 我们会发现,整个文件的 JSON 配置里的 dependencies 层次结构与文件系统中 node_modules 的文件夹层次结构是完全对照的 只关注 requires: {} 字段又会发现..., 国内有位开发者 robin.law 将原文翻译为中文 npx是什么,为什么需要npx?.

    6.8K160

    React Native移植原生Android

    我这边新建一个目录TestInte,然后采用Android Studio创建一个android项目在该文件夹下面。具体如下: ?...react依赖:"react": "15.0.2"和react-native依赖:"react-native": "^0.26.3", [注意].不要问我为什么知道这样配置的,你init一个项目就知道了...如果这样觉的嫌麻烦了,当然了还记得上面如果你重新init一个项目,直接把node_modules文件夹复制进行呗 5.4.curl -o .flowconfig  https://raw.githubusercontent.com...0.20.1版本,所以我们这边还是需要做一些配置,让它可以加载我们node_modules文件夹中react-native本地最新版本库。...【注意事项】.感谢热心童鞋的回复,大家可能会遇到评论区中找不到.so文件的问题 具体解决方案:http://www.jianshu.com/p/67c574236e8f 解决方案方案: 找不到.so 库错误

    2K70

    vue-cli-service: command not found报错引发的血案

    serve,这个时候 nodejs 会尝试在 node_modules 下的 .bin 目录下查询 vue-cli-service 可执行性文件,如果找不到就会去全局安装的 node_modules...我在 ant-design-vue-pro 的node_modules/.bin 下确实没有发现 vue-cli-service 可执行性文件。...": { "@vue/cli-service": "~5.0.8" } } 现在的问题就简化为: 在package.json中的devDependencies字段中指定的依赖包,在什么情况下会没有安装成功...继续查看 npm 文档,在 npm install 相关文档 中我们发现一段解释: By default, npm install will install all modules listed as...([Y]es/[n]o/[a]lways/n[e]ver) 通常遇到这个提示的时候我不会很在意,一般都会选择 Yes,这样如果我们的工程下存在 .env 文件,zsh 终端会自动读取环境变量,并设置到当前环境中

    3.1K20

    解决Electron安装报错问题

    首先我们进入它的源代码,这个里面有一个npm的文件夹,这个路径下存放的就是npm上的Electron依赖。打开看看你会发现只有几个文件,没错Electron的依赖包就这么点东西。 ?...但是往往在国内github会很慢,所以这就导致了下载失败的问题,如果我们的env中传入ELECTRON_MIRROR,那就会走该值所对应的地址,通常我们使用淘宝的镜像http://npm.taobao.org...一般启动Electron的时候调用的命令是electron .,而electron命令其实是调用依赖包中的cli.js文件,该文件内容如下: #!...,也就是当前路径下的dist文件夹下的可执行文件的路径。...还记得下载完后往path.txt里面写了一个可执行文件的路径吗? 我们再回到cli.js文件中,从代码中可以看出,里面启动了一个子进程,用子进程启动Electron的可执行文件,并且把参数传进去了。

    8.1K64

    包管理工具

    npm 了,或者国内的 npm 镜像包 cnpm ,大家熟称为淘宝镜像 但是现在,npm 已经是前端家喻户晓的存在了,为什么还会出现诸如 cnpm Yarn pnpm Yarn2 等等...今天就让我带大家一起一探究竟...,为什么已经出现如此之久的 npm 还会有重复造轮子的包管理呢?...pnpm 引入了一种替代的依赖解析策略:内容寻址存储。 这个方式导致你的 node_modules 文件夹里面的依赖包都将存储在 ~/.pnpm-store/ 下。...这是通过 node_modules 层实现的,使用符号链接创建一个嵌套的依赖关系结构,其中文件夹中的每个包都是到存储的硬链接。 这是为什么 pnpm 会在快速和磁盘效率上有大幅提升的原因。...那么所有的次级依赖去哪里了呢?就在 .pnpm 的文件夹里面,我们打开后可以看到所有的依赖(包括依赖的依赖)都在 .pnpm 文件夹内,所以 react 是唯一一个你的应用必须拥有访问权限的包。

    3K20

    【腾讯云 Cloud Studio 实战训练营】沉浸式体验编写一个博客系统

    你会惊喜的发现 这个与vscode 惊人的相似 项目搭建 接下来就开始进行项目搭建环节 注意事项 在搭建Nuxt项目时,你需要注意以下几个方面: 安装Node.js和npm: Nuxt是基于Node.js...拓展内容 开发和构建: 使用Nuxt进行开发时,可以在pages目录下创建页面组件,Nuxt会自动根据文件名生成路由。...' ] } ➜ blog git:(master) ✗ 解决错误 根据错误信息显示,是找不到模块 ‘node:util’,导致引发了错误。...可以尝试以下办法解决 根据错误信息显示,依然是找不到模块 ‘node:util’,导致引发了错误。这可能是由于依赖关系问题或缺失的模块引起的。..., 不知在哪里找到, 除非重启项目 文件同步运行问题 编辑文件的时候自动保存, 导致终端会热更新, 显得很乱, 而且出现的报错也很严重, 比如我一个闭合还没敲,但是终端已经运行了, 这时就会报错, 很难受啊

    48610

    【腾讯云 Cloud Studio 实战训练营】沉浸式体验编写一个博客系统

    图片 拓展内容 开发和构建: 使用Nuxt进行开发时,可以在pages目录下创建页面组件,Nuxt会自动根据文件名生成路由。...' ] } ➜ blog git:(master) ✗ 解决错误 根据错误信息显示,是找不到模块 'node:util',导致引发了错误。...可以尝试以下办法解决 根据错误信息显示,依然是找不到模块 'node:util',导致引发了错误。这可能是由于依赖关系问题或缺失的模块引起的。...,总结如下: 链接图片不显示 如图我的imgLink 是有效的https 地址 , 但是 实际上运行之后并没有显示出来, 随后我又换了几种方式,发现都不显示, 很难受 图片 终端启动项目 我这个是nuxt..., 就找不到这个弹窗了, 不知在哪里找到, 除非重启项目 文件同步运行问题 编辑文件的时候自动保存, 导致终端会热更新, 显得很乱, 而且出现的报错也很严重, 比如我一个闭合还没敲,但是终端已经运行了

    67571

    从单体到微服务,腾讯文档微服务网关工程化的演进实践

    此外 @grpc/grpc-js 的上层依赖在管理包的时候,使用 ^ 来指定版本导致只会锁住包的 major version。 1.5 为什么没有使用 lock 文件?...我们分析完没有锁住版本的情况,我们来看下为什么项目之前没有使用 lock 文件。...大家在编写代码的时候,都倾向于抽象,将代码放在一个自治的地方(比如文件夹),里面的逻辑是独立易于理解的单一逻辑,避免一次性了解所有内容,这样在维护的过程中,可以在高层级的地方了解模块概述的职责,并只在涉及修改具体逻辑的时候才会深入模块了解细节...但随着项目的不断发展,架构不断演进,代码的抽象会越来越多,如果仅有文件夹的方式来组织项目,那么项目的维护会变得不堪重负。 2.2 代码组织的极端 那怎么来组织代码呢?...文件 + 文件夹的方式与每个模块为一个单独的仓库可以看作是组织方式的两种极端: 如果只用文件夹来管理,模块之间的边界是非常模糊的,在项目初期可能没有问题,但是大家开发为了方便肯定慢慢会退化成一些很混乱的引用方式

    75252
    领券