Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

配置 NPM #143

Open
coconilu opened this issue Jan 2, 2019 · 0 comments
Open

配置 NPM #143

coconilu opened this issue Jan 2, 2019 · 0 comments

Comments

@coconilu
Copy link
Owner

coconilu commented Jan 2, 2019

概述

与NPM配置相关的,有下面几个文件:

  1. .npmrc
  2. package.json
  3. package-lock.json
  4. package-locks
  5. shrinkwrap.json

.npmrc

.npmrc文件,就是npm的配置文件所在位置。通过这个文件可以查看一些npm元信息,比如包的缓存目录、全局或本地node包的存放位置等等。

相关的指令有:

npm config list
npm config set <key> <value>
npm config get [<key>]
npm config delete <key>
npm config list [--json]
npm config edit
npm set <key> <value>
npm get [<key>]

配置项请参考:Npm config list 字段

package.json

该文件用于描述当前库的信息,包括名字、作者、描述、依赖等等。

package.json中最重要的属性是name和version两个属性,这两个属性是必须要有的,否则模块就无法被安装,这两个属性一起形成了一个npm模块的唯一标识符。模块中内容变更的同时,模块版本也应该一起变化。

name,名称
version,版本
description,描述
keywords,关键字
homepage,主页
bugs,bug提交地址或者邮箱
license,协议
author,作者
contributors,贡献者
email,作者邮箱
url,作者主页
files,项目包含的文件和文件夹,也可以通过`.npmignore`文件来配置
main,入口文件
browser,如果模块是用在浏览器端,那么应该适用browser字段而不是main字段
bin,可执行模块
man,仅适用linux系统
directories,描述模块结构
repository,代码存放地址
scripts,脚本
config,存放配置,可以通过process.env.npm_package_config_{key}来访问值
dependencies,依赖
devDependencies,开发时依赖
peerDependencies,同伴依赖
bundledDependencies,捆绑依赖
optionalDependencies,可选依赖
engines,指定工作的node版本
os,指定运行的操作系统,支持黑名单和白名单
cpu,指定运行的cpu架构
private,设置为私有库,防止意外发布
publishConfig,一些在发布包时需要的设置

版本号相关

  1. >、>=、<、<=,顾名思义
  2. ~,大约等于
  3. ^,兼容版本
  4. *,匹配任意版本
  5. x,表示任意数字
  6. version1 - version2,表示区间,等同>=version1 <=version2
  7. tag,常用的有latest
  8. URL
  9. Git URL
  10. GitHub URL

peerDependencies

通常是在插件开发的场景下,你的插件需要某些依赖的支持,但是你又没必要去安装,因为插件的宿主会去安装这些依赖,你就可以用peerDependencies去声明一下需要依赖的插件和版本,如果出问题npm就会有警告来提醒使用者去解决版本冲突问题。

bin指定指令

如果包是安装在本地的话,package.json文件里的scripts字段可以识别./node_modules/.bin路径下的指令;如果包是安装在全局的话,包里的bin字段对应的脚本会映射到系统PATH路径上——所以可以在终端执行这些脚本指令。

因为指令npm link可以把本地开发的包安装到全局上,所以我们可以很方便测试自己写的指令。

npm unlink可以注销掉之前安装到全局的本地包。

指令可以通过process.argv获取终端传入的命令行参数,它是一个数组。

package-lock.json和shrinkwrap.json

这两个文件作用一样,除了一点,当发布一个包的时候shrinkwrap.json会被包含在里面。

package-locks

这包括npm install,npm rm,npm update等为了防止这种更新情况发生,你可以使用--no-save选项,防止一起保存,或 --no-shrinkwrap允许package.json同时使被更新 package-lock.json或npm-shrinkwrap.json完整。

参考

npm 中文文档
npm-folders
npm的package.json字段含义中文文档
peerDependencies介绍及简析
浅谈node.js命令行工具
npm package.json属性详解

@coconilu coconilu mentioned this issue Jun 23, 2020
68 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant