我为什么要系统的学npm 呢
微信小程序开发midi 想用一些web 上的npm 包发现各种报错,为了获取改造web npm 包 的能力。得学一下 npm
参考资料:https://docs.npmjs.com/about-npm
About NPM
npm是世界上最大的软件注册中心。来自各大洲的开源开发者使用npm来分享和借用软件包,许多组织也使用npm来管理私人开发。
npm由三个不同的部分组成:
- 网站
- 命令行界面(CLI)
- 注册中心
网站用来发现软件包,设置配置文件,并管理你的npm体验的其他方面。例如,你可以设置组织来管理对公共或私人软件包的访问。
CLI从终端运行,是大多数开发者与npm互动的方式。
注册表中心是一个大型的JavaScript软件公共数据库和围绕它的元信息。
NPM 可以用来做什么
- 为你的应用程序改编代码包,或按原样纳入软件包。
- 下载你可以立即使用的独立工具。
- 使用npx运行软件包,无需下载。
- 与任何npm用户分享代码,在任何地方。
- 将代码限制给特定的开发者。
- 创建组织来协调包的维护、编码和开发人员。
- 通过使用组织形成虚拟团队。
- 管理多个版本的代码和代码依赖性。
- 当底层代码更新时,轻松更新应用程序。
- 发现解决同一难题的多种方法。
- 找到其他正在处理类似问题和项目的开发者。
NPM 版本
当你安装Node.js时,npm会自动安装。然而,npm的发布比Node.js更频繁,所以要安装最新的稳定版本的npm,在命令行中运行。
npm install npm@latest -g
用 nvm 来 install node
https://github.com/nvm-sh/nvm
包 和 模块
公共的npm注册中心是一个JavaScript包的数据库,每个包都由软件和元数据组成
npm注册中心包含了一些packages,其中许多也是Node模块,或者包含Node模块
包是一个由package.json文件描述的文件或目录。
一个包必须包含一个package.json文件,才能被发布到npm注册中心。
关于包的格式
一个包是以下任何一种情况。
a) 一个包含package.json文件所描述的程序的文件夹。
b) 一个包含(a)的gzipped tarball。
c) 一个可以解析到(b)的URL。
d) 一个<名称>@<版本>,与(c)一起发布在注册中心上。
e) 一个指向(d)的<名称>@<标签>。
f) 一个有满足(e)的最新标签的<名>。
g) 一个git网址,当克隆时,结果是(a)。
npm包的git URL格式
git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish
commit-ish可以是任何标签、sha或分支,可以作为参数提供给git checkout。默认的commit-ish是master。
关于模块
模块是node_modules目录下的任何文件或目录,可以被Node.js require()函数加载。
要被Node.js require()函数加载,一个模块必须是以下之一。
一个有package.json文件的文件夹,其中包含一个 "main "字段。
一个JavaScript文件。
注意:由于模块不需要有package.json
文件,所以不是所有模块都是包。只有那些有package.json
文件的模块也是包。
在Node程序的上下文中,模块也是从文件中加载的东西。例如,在下面的程序中。
var req = require('request')
我们可以说:"变量req指的是request模块"。
About scopes
你必须使用npm第2版或更高版本才能使用scopes
当你注册一个npm用户账户或创建一个组织时,你会被授予一个与你的用户或组织名称相匹配的scope。你可以使用这个范围作为相关软件包的命名空间。
scopes 允许你创建一个与另一个用户或组织创建的包同名的包,而不发生冲突。
当在package.json文件中被列为依赖关系时,范围内的包在其范围名之前
"npmcorp" scope:
@npmcorp/package-name
作用域和包的可见性
无作用域的包总是公开的。
私有的包总是有作用域的。
scopes的包默认是私有的;你必须在发布时传递一个命令行标志来使其公开。
npm package scope, access level, and visibility
npm包的可见性取决于包所包含的范围(命名空间),以及为包设置的访问级别(私有或公共)。
为注册中心提供软件包
你可以为你的软件包添加package.json文件,以方便他人管理和安装。
发布到注册表的软件包必须包含一个package.json文件。
package.json文件。
- 列出你的项目所依赖的软件包
-使用语义版本规则指定你的项目可以使用的软件包的版本
-使你的构建具有可重复性,因此更容易与其他开发者分享 - 注意:为了使你的包更容易在npm网站上找到,我们建议在你的package.json文件中包括一个自定义的描述。
package.json 字段
package.json文件必须包含 "name "和 "version "字段。
定制package.json调查表
如果你预计会创建许多package.json文件,你可以定制在init过程中提出的问题和创建的字段,这样所有的package.json文件都包含一套标准信息。
在你的主目录中,创建一个名为.npm-init.js的文件。
要添加自定义问题,使用文本编辑器,用提示函数添加问题。
module.exports = prompt("what's your favorite flavor of ice cream, buddy?", "I LIKE THEM ALL")。
要添加自定义字段,使用文本编辑器,在.npm-init.js文件中添加所需字段。
module.exports = {
customField: '示例自定义字段'。
otherCustomField: 'This example field is really cool
}
要了解更多关于创建高级npm init定制的信息,请看init-package-json GitHub仓库。
创建一个默认的package.json文件
要使用从当前目录中提取的信息创建一个默认的package.json,请使用带有--yes或-y标志的npm init命令。默认值的列表,见 "从当前目录中提取的默认值"。
npm init --yes
搜索并选择下载的软件包
你可以使用npm搜索栏来寻找在你的项目中使用的包。npm搜索使用npms和npms分析器;关于这两者的更多信息,见https://npms.io/about。
包的搜索等级标准
通常,有几十个甚至几百个名字相似和/或目的相似的软件包。为了帮助你决定最好的探索对象,每个软件包都根据四个标准用npms分析器进行了排名。
受欢迎程度
流行度表示该软件包被下载的次数。这是别人认为有用的软件包的一个有力指标。
质量
质量包括README文件的存在、稳定性、测试、最新的依赖关系、自定义网站和代码的复杂性等因素。
维护
维护是根据开发人员对软件包的关注程度来排名的。例如,更经常维护的软件包更有可能与当前或即将推出的npm CLI版本良好配合。
最优
最优化将其他三个标准(流行度、质量、维护)以一种有意义的方式结合到一个分数中。
在你的项目中使用npm包
对于scopes内的软件包,
运行npm install <@scope/package_name>
var lodash = require('lodash');
对于没用scopes的软件包,
运行npm install <package_name>。
var projectName = require("@scope/package-name")
Scripts
package.json文件的 "scripts "属性支持一些内置的脚本和它们预设的生命周期事件,以及任意的脚本。这些都可以通过运行npm run-script
Pre & Post Scripts
要为package.json的 "scripts "部分定义的任何脚本创建 "pre "或 "post "脚本,只需创建另一个名称相同的脚本,并在它们的开头加上 "pre "或 "post"。
{
"scripts": {
"precompress": "{{ executes BEFORE the `compress` script }}",
"compress": "{{ run command to compress files }}",
"postcompress": "{{ executes AFTER `compress` script }}"
}
}
CLI Commands
npm adduser
添加一个注册表用户账户
npm audit
运行一个安全审计
npm bin
显示npm bin文件夹
npm bugs
在网页浏览器中显示软件包的Bug,也许是
npm cache
操纵软件包缓存
npm ci
以干净的方式安装一个项目
npm completion
npm的标签完成
npm config
管理 npm 配置文件
npm dedupe
减少重复建设
npm deprecate
废弃一个软件包的版本
npm diff
注册处的diff命令
npm dist-tag
修改软件包的分发标签
npm docs
在网络浏览器中为一个软件包提供文档,也许是
npm doctor
检查你的环境
npm edit
编辑一个已安装的软件包
npm exec
从一个npm包中运行一个命令
npm explain
解释已安装的软件包
npm explore
浏览一个已安装的软件包
npm find-dupes
查找软件包树中的重复内容
npm fund
检索资金信息
npm help
搜索npm帮助文档
npm help-search
获取关于npm的帮助
npm hook
管理注册表钩子
npm init
创建一个package.json文件
npm install
安装一个软件包
npm install-ci-test
安装一个全新的项目并运行测试
npm install-test
安装软件包并运行测试
npm link
链接一个包的文件夹
npm logout
登出注册表
npm ls
列出已安装的软件包
npm org
管理org
npm outdated
检查过期的软件包
npm owner
管理软件包所有者
npm打包
从一个包中创建一个压缩包
npm ping
平移npm注册表
npm pkg
管理你的 package.json
npm prefix
显示前缀
npm profile
改变你的注册表配置文件的设置
npm prune
删除不相干的软件包
npm publish
发布一个软件包
npm rebuild
重建一个软件包
npm repo
在浏览器中打开软件包库页面
npm重启
重启一个软件包
npm root
显示npm根目录
npm run-script
运行任意的软件包脚本
npm search
搜索软件包
npm set-script
在 package.json 的 scripts 部分设置任务
npm shrinkwrap
锁定发布的依赖版本
npm star
标记你最喜欢的软件包
npm star
查看标记为收藏夹的软件包
npm start
启动一个软件包
npm stop
停止一个软件包
npm test
测试一个软件包
npm token
管理你的认证令牌
npm uninstall
删除一个软件包
npm unpublish
从注册表中删除一个软件包
npm unstar
从你的收藏包中删除一个项目
npm update
更新一个软件包
npm version
提升一个软件包的版本
npm view
查看注册表信息
npm whoami
显示npm的用户名
npx
从一个npm包中运行一个命令
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix