`
huangyongxing310
  • 浏览: 490728 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

NPM 原理与使有

 
阅读更多
npm 就是全球的js软件包仓库,任何人都可以将自己的符合NPM要求的js软件提交上去,供全球的人进行下载使用,如(jquery,boostact等,没有NPM你只能自己网上搜索并下载使用,有了NPM就可以用NPM命令下载相关的js包和这个js包的依赖js包了,要不然你要一个个依赖从网上搜索下载)


这个工具就是程序员 Isaac Z. Schlueter用 JavaScript (运行在 Node.js 上)写的 npm,全称是 Node Package Manager(所以要安装node.js,后来与node.js合作,所以安装node.js就有了NPM,但国内不能访问所以有了CNPM(淘宝的镜像),可以理解为一个国内的NPM(内容由淘宝不断进行与NPM同步))


包,就是一个目录,里面有package.json、果js文件



本地安装
1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
2. 可以通过 require() 来引入本地安装的包。

全局安装
1. 将安装包放在 /usr/local 下或者你 node 的安装目录。
2. 可以直接在命令行里使用。



npm 由三个独立的部分组成:
网站(网站 是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径。)

注册表(registry)(注册表 是一个巨大的数据库,保存了每个包(package)的信息。)

命令行工具 (CLI(CLI(command-line interface,命令行界面)))(CLI 通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。)





相关命令:
安装一个包
npm install <package_name>
上述命令执行之后将会在当前的目录下创建一个 node_modules 的目录(如果不存在的话),然后将下载的包保存到这个目录下。

在本地目录中如果没有 package.json 这个文件的话,那么最新版本的包会被安装。
如果存在 package.json 文件,则会在 package.json 文件中查找针对这个包所约定的语义化版本规则,然后安装符合此规则的最新版本。

npm install会根据package.json的依懒进行相关包的下载


实例:
创建一个名为 index.js 的文件,并保存如下代码:
// index.js
var lodash = require('lodash'); //使用已安装的包(require)

var output = lodash.without([1, 2, 3], 1);
console.log(output);
运行 node index.js 命令。应当输出 [2, 3]。



package.json file
npm init (生成一个package.json文件)
npm init --yes (Create a default package.json)

{
  "name": "my_package", //js包名
  "description": "",
  "version": "1.0.0",
  "main": "index.js",//main属性指定了程序的主入口文件。意思是,如果你的模块被命名为foo,用户安装了这个模块并通过require("foo")来使用这个模块,那么require返回的内容就是main属性指定的文件中 module.exports指向的对象。
  "scripts": { //scripts属性是一个对象,里边指定了项目的生命周期个各个环节需要执行的命令。key是生命周期中的事件,value是要执行的命令。
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": { //指定一个代码存放地址,对想要为你的项目贡献代码的人有帮助。
    "type": "git",
    "url": "https://github.com/ashleygwilliams/my_package.git"
  },
  "keywords": [],//一个字符串数组,方便别人搜索到本模块
  "author": "", //"author"是一个码农,
  "license": "ISC",//你应该为你的模块制定一个协议,让用户知道他们有何权限来使用你的模块,以及使用该模块有哪些限制。
  "bugs": {  
    "url": "https://github.com/ashleygwilliams/my_package/issues" //填写一个bug提交地址或者一个邮箱,被你的模块坑到的人可以通过这里吐槽
  },
  "homepage": "https://github.com/ashleygwilliams/my_package" //这个项目主页url和url属性不同,如果你填写了url属性,npm注册工具会认为你把项目发布到其他地方了,获取模块的时候不会从npm官方仓库获取,而是会重定向到url属性配置的地址。
}



scripts,就是定义一些运行脚本,就输入npm run XXX时,就运行XXX对应的指令(如node.js指令)

npm package.json属性详解
https://www.cnblogs.com/tzyy/p/5193811.html



更新本地安装的包
package.json 文件所在的目录中执行 npm update 命令。
执行 npm outdated 命令。不应该有任何输出。


卸载本地安装的包
npm uninstall <package>:
如需从 package.json 文件中删除依赖,需要在命令后添加参数 --save:

如果你将安装的包作为 "devDependency"(也就是通过 --save-dev 参数保存的),那么 --save 无法将其从 package.json 文件中删除。所以必须通过 --save-dev 参数可以将其卸载。

列出所有的包
npm list



全局包命令
npm install -g <package>
npm update -g <package>
npm update -g.
npm outdated -g --depth=0.
npm uninstall -g <package>
npm list


创建 Node.js 模块
Node.js 模块是一种可以发布到 npm 的包。
创建 package.json 文件是第一步。
如果使用默认值,文件名是 index.js。

在index.js文件中,添加一个函数,作为 exports对象的一个属性。这样,require 此文件之后,这个函数在其他代码中就可以使用了。
exports.printMsg = function() {
  console.log("This is a message from the demo package");
}













分享到:
评论

相关推荐

    npm的配置的第三步,及原理

    npm配置第三步及原理 npm配置第三步是指在使用vue-cli创建项目时,使用npm install安装依赖项,并配置webpack对源码进行编译打包和express服务器的设置。 第一步,使用vue init &lt;templateName&gt; 创建项目,例如vue ...

    Node.js-npm-name-检查一个包名在npm中是否可用

    了解这个工具的用法和原理,有助于Node.js开发者避免因包名冲突而带来的问题。同时,掌握npm的命令行工具使用也是提升开发效率的重要一环,因为npm不仅仅用于安装和管理依赖,还提供了大量的工具和脚本帮助开发者...

    Node.js-npm-gif用GIF替换NPM安装的进度条

    阅读源代码有助于理解其工作原理,而文档则会指导用户如何正确地安装和使用这个插件。 `npm-gif` 的实现原理可能包括监听npm的输出,捕获安装进度信息,然后根据这些信息动态更新屏幕上的GIF。这可能涉及Node.js的...

    npm-check:检查过期、错误、无用的依赖.zip

    1. **检查过期依赖**:npm-check 可以对比项目中的包版本与npm仓库中最新版本,找出所有过期的依赖。这对于保持项目的安全性和性能至关重要,因为新版本通常修复了旧版本中的bug,并可能引入了新的特性和改进。 2. ...

    npm-2.12.1.tgz

    npm(Node Package Manager)是JavaScript运行环境Node.js的默认包管理器,用于管理和分发Node.js模块。...但了解源码安装过程对于开发者来说是很有价值的,因为它能提供对软件工作原理的深入理解。

    solarwinds npm

    书中详细介绍了网络性能监控的原理与实践,以及Orion NPM软件的各个方面。 本书开篇介绍了Orion NPM的基本概念,包括其如何对网络进行监控以及本书的涵盖内容。对于使用本书的读者,作者给出了对系统要求的说明,...

    补齐npm文件夹下有关于ionic的文件

    总之,理解和熟练掌握`npm`和`Ionic`的工作原理,以及如何解决安装和依赖问题,对于进行`Ionic`开发至关重要。在遇到困难时,应优先寻求官方文档的帮助,以及社区的解决方案,避免不必要的手动操作。

    前端开源库-fuse-npm

    开发者可以通过解压这个文件,查看源代码,了解fuse-npm的工作原理,或者根据自己的需求进行定制和扩展。 总之,Fuse-npm是一个强大的前端工具,它将npm包管理的功能引入到客户端,提高了前端开发的效率和灵活性。...

    前端开源库-meta-npm

    "前端开源库-meta-npm"是一个专注于NPM(Node Package Manager)生态的开源项目,它被定义为元NPM插件,意味着它可能提供对NPM仓库的高级操作和管理功能,帮助开发者更智能地处理和探索NPM上的各种模块。 首先,...

    前端开源库-rework-npm

    在传统的前端开发流程中,CSS通常与JavaScript代码分开管理,这在引入第三方库时可能会遇到问题,因为这些库可能包含CSS资源,但不提供直接导入的方法。`rework-npm`解决了这个问题,它允许开发者像导入JavaScript...

    Atom-npm-library-description,在“package.json”中显示NPM详细信息。为维克多HQC/NPM做出贡献.zip

    对于想要贡献代码的开发者,"npm-library-description"项目可能会有以下结构: - `lib`: 存放主要的JavaScript代码,实现功能逻辑。 - `styles`: CSS样式文件,用于定制插件的外观。 - `package.json`: 插件的配置...

    npm karma 离线安装包 nodejs 5.5

    离线安装npm包的关键在于理解npm的工作原理和文件结构,以及如何手动处理依赖关系。在没有网络的环境中,这种方法可以确保项目的正常运行,特别适合在公司内网或者网络不稳定的情况下使用。同时,这也是一种备份和...

    PublishDiff预览npm发布更改

    PublishDiff的工作原理是对比当前工作目录与上一个发布的版本之间的差异,包括文件的添加、删除和修改。这使得开发者能够清楚地了解新版本将带来的影响,避免意外地引入错误或不兼容性。通过这种方式,可以提高开发...

    npm.cnpm.webpack.nvm

    在IT行业中,构建高效、可复用的前端项目是至关重要的...对于初学者来说,理解这些工具的工作原理和使用方法是提升开发效率的关键。记住,实践是最好的老师,通过实际操作和项目经验,你会更深入地掌握这些工具的运用。

    nodejs的npm模块包GIT版本(2017.2.6最新git)

    这个命令不仅会下载npm源码,`--recursive`参数还确保了所有子模块也被一并下载,这对于完整构建和理解npm的内部工作原理至关重要。 npm(Node Package Manager)的核心功能包括: 1. **包管理**:npm允许开发者将...

    Node.js-以编程方式将NPM依赖项安装到项目中

    这就需要深入理解NPM的工作原理和配置选项,以及如何通过API来处理这些问题。 综上所述,以编程方式安装NPM依赖项是一种强大的工具,尤其适用于自动化流程。但这也需要开发者对NPM的内部机制有深入了解,以确保操作...

Global site tag (gtag.js) - Google Analytics