About packages and modules | npm Docs (npmjs.com)
包是由 package.json 文件描述的文件或目录。
包必须包含 package.json 文件才能发布到 npm 注册表。
被npm管理的包必须含有package.json这个文件,否则npm无法识别这是个npm包
例如:
①在新项目中创建一个test空的文件夹
②在test空的文件夹中,执行npm install axios,看看能不能直接安装在test文件夹中
③结果发现,npm install没有在test中安装axios,而是沿着路径向上找到第一个含有package.json的文件夹,在当前目录中执行npm install axios
Packages can be unscoped or scoped to a user or organization, and scoped packages can be private or public. For more information, see "Creating a package.json file".
包是由 package.json 文件描述的文件或目录。包必须包含 package.json 文件才能发布到 npm 注册表。有关创建 package.json 文件的更多信息,请参阅 "创建 package.json 文件"。
Packages can be unscoped or scoped to a user or organization, and scoped packages can be private or public. For more information, see
About packages and modules | npm Docs (npmjs.com)
node_modules是存放node module的文件夹
模块是 node_modules 目录中可以被 Node.js require() 函数加载的任何文件或目录。
要由 Node.js require() 函数加载,模块必须是以下之一:
注意:由于模块不需要有 package.json 文件,因此并非所有模块都是包。只有具有 package.json 文件的模块也是包。
在 Node 程序的上下文中,module 也是从文件加载的东西。例如,在以下程序中:
var req = require('request')
我们可以说"The variable req refers to the request module"。
node_modules中的module模块不是必须含有package.json这个文件
不过由于node_modules中安装的基本都是从npm registry下载下来的包,而npm registry管理的包都有package.json,所以一般node_modules中下载的模块都是一个一个的package包。
About scopes | npm Docs (npmjs.com)
npm package scope, access level, and visibility | npm Docs (npmjs.com)
当您注册 npm 用户账户或创建组织时,您将获得与您的用户或组织名称匹配的范围。您可以将此范围用作相关包的命名空间。
如果你也想创建一个包,包名叫lodash,npm为了避免冲突,你可以使用@scoped-name/lodash来命令你的lodash包
例如:我可以发布一个名称叫做 @yongzl/lodash 的npm包
范围允许您创建与其他用户或组织创建的包同名的包,而不会发生冲突。
当在 package.json 文件中列为依赖项时,范围包的前面是它们的作用域名称。范围名称是 @ 和斜杠之间的所有内容
@vue/cli 范围为:vue
@npm/packageA 范围为:npm
About public packages | npm Docs (npmjs.com)
About private packages | npm Docs (npmjs.com)
作为 npm 用户或组织成员,您可以创建和发布任何人都可以下载并在自己的项目中使用的公共包。
要使用私有包,您必须
npm install npm@latest -g
使用 npm 私有包,您可以使用 npm 注册表来托管仅对您和选定的协作者可见的代码,从而允许您在项目中管理和使用私有代码以及公共代码。
私有包总是有一个范围,而范围包默认是私有的。