npm 实践了 CommonJS 包规范规范,帮助我们安装和管理依赖包,使得 Node 项目的第三方模块更加规范便捷,可以在 NPM 平台上找到所有共享的插件。
CommonJS 包规范的定义分为两部分:用于组织文件目录的包结构和用于描述包信息的包描述文件 package.json。
一个包由相当于一个存档文件,可压缩为.zip 或tar.gz,安装时解压还原。完全符合 CommonJS 包规范的目录包含以下文件:
|-- .bin // 存放可执行的二进制文件
|-- lib // 存放 Javascript 文件
|-- doc // 存放文档
|-- test // 存放单元测试用例
|-- package.json // 包描述文件
包描述文件 package.json 是一个 JSON 文件,在包的根目录下。NPM 的所有行为都与 package.json 中的字段有关,Node 程序的依赖项也体现在这些字段上。
CommonJS 包规范定义了 package.json 中的字段,NPM 实现时对 CommonJS 包规范中的字段也进行取舍和新增,常用字段有:
NPM 帮助 Node 完成第三方模块的发布、安装和依赖。可以直接执行$ npm 查看所有命令。
使用$ npm init 可以快速生成一个 package.json 文件。
使用 npm install安装依赖包是 NPM 最常用的功能,例如执行npm install express后,npm 向 registry 查询模块压缩包的网址,下载压缩包后 NPM 会在当前的 node_module 目录下创建 express 目录,将包解压还原在此。
registry 是 NPM 模块仓库提供了一个查询服务,例如 npmjs.org 的查询服务网址 https://registry.npmjs.org/ ,加模块名 https://registry.npmjs.org/vue 就得到包含 vue 模块所有版本的信息 JSON 对象,也可以使用$ npm view vue查询。
Node 项目使用require('express')引入 express 模块时,require()方法在路径分析时按照模块路径查找策略,沿当前路径向上逐级查找node_module目录,最终定位到 express 目录。
包的安装和模块引入是相辅相成的, 可以进一步理解 Node 模块加载原理
npm install默认将包和 package.json 的依赖关系保存在dependencies,但在可以通过一些额外的标志来控制它们的保存位置和方式:
例如 npm install express -D 就会将 express 依赖关系保存在devDependencies。
在npm install一个模块时经常纠结要安装在devDependencies还是dependencies,从字面意思看前者用于生产环境,后者用于开发环境。
在官方的定义中,如果环境变量 NODE_ENV 设置为 production,执行 npm install --production 时 npm 会默认安装dependencies里面的依赖项,不会去安装devDependencies里的。并且推荐dependencies里配置正式运行时必须依赖的插件,devDependencies通常用来放我们开发或测试的工具,比如 webpack,Gulp,babel,eslint等。
在实际开发过程中,Node 包的安装是依据 require/import 模块机制,无论是-P还是-D指令都会把依赖下载到 node_modules 文件夹,-P还是-D只是修改了dependencies对象,在安装这个库进行开发调试的时候,可以通过npm install一键安装这两个目录下所有的依赖。
使用 -g或 --global可以将包安装为“全局可用”,但需要注意的是,全局安装并不意味将模块包安装为一个全局包,也不是可以在任何地方都可以require()引入。
实际上-g命令是将模块包安装在“全局”的node_module中,即 Node 可执行文件相同的路径下,并通过配置 bin 字段链接。
例如使用命令行查看 Node 可执行文件的位置:
$ which node
/usr/local/bin/node
那么全局安装模块的实际位置就是/usr/local/lib/node_modules(在 Finder 中用 command+shift+G 快捷键访问隐藏目录 )
进一步了解 NPM 的使用可以看 NPM DOCS,NPM更多命令 NPM CLI
下面通过三种方法来搭建公司私有npm仓库,每种方式都有自己的优势。启动并配置服务、设置注册地址、登录cnpm、包上传到私有仓库、查看预览包、通过verdaccio搭建....
webpack:解析js文件,无法解析的文件需要借助loader,npm插件发布(vue&webpack&单页面):npm init =>package.json,创建.vue文件 =>插件界面及功能,index.js =>入口文件
NPM是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。这篇文章整理NPM常用的一些命令
直接通过&&连接多条命令,在npm run start的时候,发现只停留在第一个命令执行监听,后面的命令都没有执行。只能通过打开多个窗口分别执行多条命令,那么有没有办法实现一条npm命令执行多条监听呢?
npm和bower太像了,就像一对孪生兄弟…… npm的文件是package.json,包安装的目录是node_modules。 bower的文件是bower.json,包安装的目录是bower_components。使用命令也基本一致
这篇文章主要介绍了vue项目中Npm run build 根据环境传递参数方法来打包不同域名,使用npm run build --xxx,根据传递参数xxx来判定不同的环境,给出不同的域名配置,具体内容详情大家参考下:config文件夹下dev.env.js中修改代码、prod.env.js中修改代码 HOST为截取到的参数
使用node.js和npm,在安装模块的时候报错npm WARN saveError ENOENT: no such file or directory, open ...的解决办法。这个原因就是因为项目没有进行初始化,缺少package.json文件造成的。需要package.json才能npm install。 可以npm init初始化生成一个package.json。
抽空写了一个 textarea,打算发布到 npm 的时候却遇到了问题,之前用 vue-cli 2.x 的时候,打包配置项非常透明,可以很容易的修改,但升级到 vue-cli 3.x 之后,反而一脸懵逼
如果您曾在 Node 或 JavaScript 前端开发中投入过时间和精力,那么您就知道 npm 中有数以十万计的模块可供您选择。挑选模块可能很难,但您只需要一些方法点来解决它。当您正在为如何抉择浪费时间,或者甚至不知道从哪里开始时,请使用本指南来帮助您。
关于 npm run eject 报错的问题,昨天新开React的项目, 刚刚一上手就碰到问题,解决方法(前提你有git).出错的原因:应该是git没有安装好,或者代码没有提交上git
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!