首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nodejs笔记2 包管理 npm

g 使用 i5ting_toc -f readme.md -o 发布npm包 登录npm npm login 发布 npm publish 删除(只能删除72小时内发布的包,删除的包24小时内不允许重复发布.../或…/开头,则从当前模块的父目录开始,尝试从/node_modules文件夹加载第三方模块 如果当前目录没有找到第三方模块,移动到上一层目录查找/node_modules,直到根目录 模块标识符是目录时加载顺序...: 目录下查找package.json文件,寻找main属性作为加载入口 没有package.json,或main不存在尝试加载目录下index.js 没有index.js, 报错 package-lock.json...package.json如果只需要安装到开发环境,例如webpack,后面追加参数–save-dev) npm install pkgname 一次性安装所有包(安装package.json中记录的所有包...) npm install 卸载包(自动删除package.json中依赖信息) npm uninstall pkgname

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

关于 npm 和 yarn 总结一些细节

运行 npm run xxx 的时候,npm 会先在当前目录的 node_modules/.bin 查找要执行的程序,如果找到运行; 没有找到则从全局的 node_modules/.bin 中查找【npm...i -g xxx 就安装到了全局目录如果全局目录还是没找到,那么就从 path 环境变量中查找有没有其他同名的可执行程序 2、yarn 和 npm 比,优点有哪些?...3、yarn 和 npm 在卸载了包以后,node_modules 里面的包会被删除吗?...每个 semver 都对应一段版本允许范围,如果两个模块的版本允许范围存在交集,那么就可以得到一个兼容版本,而不必版本号完全一致,这可以使更多冗余模块在 dedupe 过程中被去掉。...上一步会获取到模块的压缩包地址(resolved 字段),npm 会用此地址检查本地缓存,缓存中有就直接拿,如果没有则从仓库下载。 查找该模块依赖,如果有依赖回到第 1 步,如果没有停止。

61840

hexo-butterfly-npm标签插件开发

,从而进一步加载插件列表(自带&第三方插件) # loadScripts:加载脚本类插件(自带&主题scripts下的脚本) ​ 部分插件如果存在编译错误hexo会无法正常启动且输出错误日志,因此在自定义的时候注意根据日志检查错误相应调整即可...,查看内容是否正常渲染 常见问题 ​ 如果npm login登录失败,执行npm config list -l指令检查是否配置了代理。...如果配置了https-proxy,相应执行指令删除npm config delete https-proxy ​ 如果npm publish发布失败,检查发布的仓库时npm还是cnpm(国内淘宝镜像库...2.下载测试版本 - npm install xxx@beta npm包管理 删除npm包 ​ 考虑到删除的影响,npm包的删除限制在发布后72小时内操作 npm unpublish [packagename...] --force ​ 但需要注意额度是,一旦使用了npm unpublish撤销操作,再次执行发布操作会被限制(403错误提示),因为npm中针对同名的包如果取消发布了则需24h后才能解禁,如果不想改包名

73720

JavaScript 编程精解 中文第三版 二十、Node.js

.js扩展名可能会被忽略,如果这样的文件存在,Node 会添加它。 如果所需的路径指向一个目录 Node 将尝试加载该目录中名为index.js的文件。...包文件 在npm install例子中,你可以看到package.json文件不存在的警告。 建议为每个项目创建一个文件,手动或通过运行npm init。...npm命令也用于发布新的包或包的新版本。 如果你在一个包含package.json文件的目录中执行npm publish,它将一个包发布到注册处,带有 JSON 文件中列出的名称和版本。...当找不到文件时,尝试用mkdir创建一个目录。 当路径中存在目录时,可以返回 204 响应,以便目录创建请求是幂等的。 如果这里存在目录文件,返回错误代码。...相反,将你的代码保存在公共访问目录之外,测试时再将其拷贝到公共目录中。

2.1K40

NPM 组件你应该知道的事

esm 如果是用 npm 组件来使用, 都推荐使用这种导出模式。...【贴部分源码,感兴趣的可以看看】 如果不是 jsx 或 tsx 文件, 直接 copy 到目标目录,否则经过 bable 处理, 并将后缀改成 js ?...tree.png 定义 如果被标记为无副作用的模块没有被直接导出使用,打包工具会跳过进行模块的副作用分析评估。由此安全地删除文件中未使用的部分。...模块作用域 将package.json 中sideEffects 设置为 false ,表示改模块全部忽略副作用 局部文件 package.json 中 sideEffects 数组写对应文件,比如常见的写上...external 对于打包成 umd 的文件,由于它无法分析是否存在 peerDependencies, 所以如果使用方已有 react、 react-dom 等库,需要在webpack打包时,将 external

1.6K20

npm install 原理分析

其将早期的嵌套结构改为扁平结构: 安装模块时,不管其是直接依赖还是子依赖的依赖,优先将其安装在 node_modules 根目录。...由于在执行 npm install 的时候,按照 package.json 里依赖的顺序依次解析, buffer 和 buffer2 在 package.json 的放置顺序决定了 node_modules...npm cache clean:删除缓存目录下的所有数据,为了保证缓存数据的完整性,需要加上 --force 参数。 npm cache verify:验证缓存数据的有效性和完整性,清理垃圾数据。...用户下载依赖包到本地后,需要确定在下载过程中没有出现错误,所以在下载完成之后需要在本地在计算一次文件的 hash 值,如果两个 hash 值是相同的,确保下载的依赖是完整的,如果不同,进行重新下载。...无 lock 文件: 从 npm 远程仓库获取包信息 根据 package.json 构建依赖树,构建过程: 构建依赖树时,不管其是直接依赖还是子依赖的依赖,优先将其放置在 node_modules 根目录

9.3K106

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

/node_modules 这层目录只含有这两个子目录: node_modules/ ├─┬ A │ ├── C ├─┬ B │ └── C 如果使用 npm 3 来进行安装的话,....,然后手动更改 package.json 中的配置; 3)如果想要删除某个包,只需要简单的删除 package.json 文件中相应的某一行,然后删除 node_modules 中该包的目录; 但是这样的层级结构也有较为明显的缺陷...npm 3 会遍历所有的节点,逐个将模块放在 node_modules 的第一层,当发现有重复模块时,丢弃, 如果遇到某些依赖版本不兼容的问题,继续采用 npm 2 的处理方式,前面的放在 node_modules...,但是 package-lock.json 可以提交到代码库,如果开发人员想要回溯到某一天的目录状态,只需要把 package.json 和 package-lock.json 这两个文件回退到那一天即可...optionalDependencies 就像是我们的代码的一种保护机制一样,如果存在的话就走存在的逻辑,不存在的就走不存在的逻辑。

2.5K10

为什么要使用 package-lock.json

上面的问题是,如果 4.17.x 版本存在一个错误,我的本地设置将会失败,但是发布商的版本将继续在旧版本上正常运行。 在生产环境中可能会发生同样的事情,并且你不知道为什么它会失败。...如果所有成员都可以使用 NPM+5,最好对未发布的项目使用 package-lock.json。...如果有人手动更改 package.json(例如,他们删除了一个软件包,因为这只是删掉一行),那么下次有人运行 npm install 时,它将更改 package-lock.json 以反映对先前软件包的删除...npm uninstall 与 install 类似,但需要用要被删除的模块名称作为参数。这将同时更改 package.json 和 package-lock.json 。...假设我们在 package.json 中有一个依赖项,状态为 ^1.4.5。 字符 ^ 告诉 NPM 检查在 1.X.X 范围内是否有较新版本,如果有,进行安装。

1.3K20

你真的了解package.json吗?

比如, JS项目开发时,在根目录上会存在package.json 在Rust项目开发时,根目录下有Cargo.toml 我们今天的主角 -package.json的主要作用是「跟踪项目中所需的所有依赖关系...如果将包发布到 npmjs, name 属性是必需的并且必须是唯一的。如果使用和 npmjs已经存在的名称发布包,将收到错误。 如果不将包发布到npmjs,那么项目的name字段就没有那么多要求。...如果新版本有破坏性变化或与旧版本不兼容,增加版本的 MAJOR 部分。 ❞ 例如,如果软件包的当前版本为 1.0.9: 如果下一个发布仅包含错误修复,新版本应为 1.0.10。...❝如果未特别指定, files 字段默认为["*"]。 ❞ 我们可以在包的根目录或子目录中提供 .npmignore 文件,这将防止包含文件。...一些特殊的文件和目录也会被包含,无论它们是否存在于 files 数组中。

16610

Npm vs Yarn 之备忘详单

config set registry 仓库地址 更换仓库地址 npm init yarn init 互动式创建/更新 package.json 文件 npm list yarn list 查看当前目录下已安装的...不要忘记,您使用的 npm 包越多,存在易受攻击或恶意攻击的风险就越高。...如果你想从cli打开模块的主页,你可以这样做: npm home axios 要检查未决的问题或公开的路线图(如果有的话),你可以试试这个: npm bugs axios 另外,如果你只是想检查模块的...具体例子来说,有些时候会有需求要删除 Git 仓库所有提交历史,而保留代码为当前状态;而删除 .git 文件夹可能会导致您的 git 存储库中的问题;所以可以使用另一种更为安全的办法:详见如何删除 Git...yarn.lock 就是为解决此问题而衍生的存在;为了跨机器安装得到一致的结果,Yarn 需要比你配置在 package.json 中的依赖列表更多的信息。

1.4K30

你真的了解package.json吗?

比如, JS项目开发时,在根目录上会存在package.json 在Rust项目开发时,根目录下有Cargo.toml 我们今天的主角 -package.json的主要作用是跟踪项目中所需的所有依赖关系...如果将包发布到 npmjs, name 属性是必需的并且必须是唯一的。如果使用和 npmjs已经存在的名称发布包,将收到错误。 如果不将包发布到npmjs,那么项目的name字段就没有那么多要求。...如果新版本有破坏性变化或与旧版本不兼容,增加版本的 MAJOR 部分。 例如,如果软件包的当前版本为 1.0.9: 如果下一个发布仅包含错误修复,新版本应为 1.0.10。...如果未特别指定, files 字段默认为["*"]。 我们可以在包的根目录或子目录中提供 .npmignore 文件,这将防止包含文件。...一些特殊的文件和目录也会被包含,无论它们是否存在于 files 数组中。

10510

NPM基本介绍(一)

如果存在这个字段,require()方法会查找宝目录下的index.js、index.node、index.json文件作为默认入口 devDependencies: 一些模块只有在开发的时候需要依赖...'),请使用本地安装,然后将其安装在项目的根目录下。...(缓存目录) 解压压缩包到当前项目的node_modules目录 运行npm install首先会判断项目文件夹node_modules中有没有对应的模块,没有直接去远程下载,然后保存在缓存中,将缓存中的压缩包解压至对应的项目的...package.json文件,可以添加-y | --yes 参数默认所有配置为默认yes npm root -g:查看全局安装地址 npm run:列出项目所有脚本命令参数, npm uninstall...,根据keywords进行查找 npm prune:移除当前不在package.json中但是存在node_modules中的依赖 npm repo :浏览器端打开项目地址(GitHub

1.5K20

Npm vs Yarn 之备忘大全

使用过程中遇到问题,你可以将其上报或者贡献解决方案。一旦问题被修复,Yarn会更新保持同步。...config set registry 仓库地址 更换仓库地址 npm init yarn init 互动式创建/更新 package.json 文件 npm list yarn list 查看当前目录下已安装的...不要忘记,您使用的 npm 包越多,存在易受攻击或恶意攻击的风险就越高。...如果你想从cli打开模块的主页,你可以这样做: npm home axios 要检查未决的问题或公开的路线图(如果有的话),你可以试试这个: npm bugs axios 另外,如果你只是想检查模块的...yarn.lock 就是为解决此问题而衍生的存在;为了跨机器安装得到一致的结果,Yarn 需要比你配置在 package.json 中的依赖列表更多的信息。

1.5K90

前端工程模块化

文件中 main属性 对应的文件 存在导入,反之报错 如果 main 属性不存在,或者 package.json存在,则会尝试导入文件夹下的 index.js 和 index.json...,进入你希望创建项目的目录; 运行 npm init 命令: 在终端中执行初始化命令:npm init|npm init -y 跳过手动输入默认信息) 生成 package.json: 完成所有提示后,...npm init 将生成一个 package.json 文件,并将其存在项目的根目录中 通过这个过程,we成功地初始化了一个新的 Node 项目,并创建了一个包含项目基本信息的 package.json...; 我们可以在安装时设置选项来区分依赖的类型 ,目前分为两类: 生产依赖安装(默认): npm i -S 包名 或 npm i --save 包名 包信息保存在 package.json 中 dependencies...属性; 开发依赖安装: npm i -D 包名 或 npm i --save-dev 包名 包信息保存在 package.json 中 devDependencies 属性; 全局依赖包: 另外NPM

6910

前端工程模块化

直接返回缓存的模块如果是核心模块(如http、fs等),直接返回核心模块如果是以....文件中 main属性 对应的文件 ==存在导入,反之报错==如果 main 属性不存在,或者 package.json存在,则会尝试导入文件夹下的 index.js 和 index.jsonmain.js...: 这里也仅仅是简单介绍:对于核心模块: (http、fs等,直接返回模块;非核心模块:获取导入文件路径,相对路径—>—>绝对路径缓存检测: 首先从缓存中查找,如果缓存存在直接返回缓存模块,缓存不存在...package.json 文件,并将其存在项目的根目录中通过这个过程,we成功地初始化了一个新的 Node 项目,并创建了一个包含项目基本信息的 package.json 文件;package.json...属性;开发依赖安装: npm i -D 包名 或 npm i --save-dev 包名 包信息保存在 package.json 中 devDependencies 属性;全局依赖包:另外NPM除了安装开发依赖包

7410

详细介绍NPM的基本使用方法、常用命令和一些实用技巧

安装完成后,打开终端(或命令提示符),运行以下命令,检查Node.js和NPM是否成功安装: node -v npm -v 如果显示出相应的版本号,表示安装成功。...初始化项目在使用NPM管理项目之前,我们需要先初始化一个项目,以便在项目根目录下生成package.json文件,用于描述项目的依赖关系和配置信息。...安装完成后,依赖包会被下载并保存在项目的node_modules目录下。...安装完成后,依赖包会被下载并保存在全局node_modules目录下。在任何目录中,可以直接使用该依赖包提供的命令。更新和卸载依赖NPM也提供了一些命令,用于更新和卸载项目的依赖包。...发布自己的包如果你开发了一个功能强大、可复用的JavaScript组件,你可以使用NPM将其发布为一个包,供其他人使用。

1.1K30
领券