npm学习(五)之使用package.json
使用package.json
管理本地安装的npm包的最佳方法是创建一个package.json文件。
一个packagejson文件:
- 列出项目所依赖的包。
- 允许使用语义版本控制规则指定项目可以使用的包的版本。
- 使您的构建具有可重复性,因此更容易与其他开发人员共享。
需求
一个package.json必须:
- “name”
不允许大写字母
不允许空格
允许使用破折号和下划线
- “version”
以x.x.x的形式
遵循semver规范
For example:
- {
- "name": "my-awesome-package",
- "version": "1.0.0"
- }
创建一个package.json
有两种基本方法创建package.json文件。
1. 运行CLI问卷
创建package.json文件与您提供的值,运行:npm init
这将启动一个命令行问卷,最后在您启动命令的目录中创建一个package.json
2. 创建一个默认的package.json
获取默认的package.json,运行npm init -yes或npm init -y
这个方法将生成一个默认package.json,使用从当前目录中提取的信息。
- Wrote to /Users/wangkun/Desktop/nodeWork/work2/lesson8-/package.json:
- {
- "name": "lesson8-1",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "dependencies": {
- "react": "^16.8.6"
- },
- "devDependencies": {},
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC"
name
: 当前目录名称version
: 版本description
: 说明main
: 入口文件,总是index.jsdependencies:生产依赖
devDependencies:开发依赖
scripts
:脚本,默认情况下创建一个空的测试脚本keywords
:关键字author
:作者license
: 许可
您还可以为init命令设置几个配置选项。一些有用的:
> npm set init.author.email "wombat@npmjs.com"
> npm set init.author.name "ag_dubs"
> npm set init.license "MIT"
注意:
如果package.json中没有描述字段。npm使用README.md或者README的第一行来代替。这个描述帮助人们在搜索npm时找到您的包,因此在package.json中进行自定义描述绝对是有用的,使您的
包更容易找到。
如何自定义package.json问卷
如果您希望创建多个package.json文件,您可能希望自定义init过程中询问的问题,以便这些文件始终包含您期望的关键信息。您可以自定义字段以及所询问的问题。
为此,在主目录~/.npm-init.js中创建一个自定义 .npm-init.js。
一个简单的.npm-init.js可能是这样的:
- module.exports = {
- customField: 'Custom Field',
- otherCustomField: 'This field is really cool'
- }
在主目录中使用这个文件运行npm init将输出一个package.json包含下面的这些:
- {
- customField: 'Custom Field',
- otherCustomField: 'This field is really cool'
- }
您还可以使用prompt函数自定义问题。
- module.exports = prompt("what's your favorite flavor of ice cream, buddy?", "I LIKE THEM ALL");
要了解更多关于如何创建高级定制的信息,请查看init-package-json文档
指定依赖项
要指定项目所依赖的包,需要列出希望在中package.json文件中使用的包,你可以列出两种包:
“dependencies”:您的应用程序在生产中需要这些包。
“devDependencies”:这些包只用于开发和测试。
手动编辑package.json
您可以手动编辑package.json。您需要在包对象中创建一个名为dependencies的属性,该属性指向一个对象。这个对象将包含您希望使用的包的名称属性。它将指向一个semver表达式,该表达式指
定与您的项目兼容的项目版本。如果您有依赖关系,您只需要在本地开发期间使用,请遵循与上面相同的指示,但要使用名为devDependencies的属性。
例如,下面的项目使用的my_dep包的任何版本与生产中的主要版本1匹配,并且需要my_test_framework包的任何版本与主要版本3匹配,但仅用于开发:
- {
- "name": "my_package",
- "version": "1.0.0",
- "dependencies": {
- "my_dep": "^1.0.0"
- },
- "devDependencies" : {
- "my_test_framework": "^3.1.0"
- }
- }
--save和--save-dev安装标志
向package.json中添加依赖项的更简单(也更棒)的方法,从命令行开始执行,使用--save或--save-dev标记npm install命令,这取决于您希望如何使用该依赖项。
向package.json文件中的
dependencies:npm install <package_name> --save
向package.json文件中的devD
ependencies:
npm install <package_name> --save-dev
管理依赖版本
npm使用语义版本控制,或者正如我们经常提到的SemVer,来管理包的版本和版本范围。
如果你有一个package.json文件在你的目录中并且运行npm install,npm将查看该文件中dependencies列出的,并使用语义版本控制下载最新版本。
更多内容
npm学习(五)之使用package.json的更多相关文章
- 关于npm 淘宝镜像 以及package.json里包的更新
1.淘宝镜像的设置 npm config set registry https://registry.npm.taobao.org npm config set disturl https://npm ...
- Nodejs 包与 npm第三方模块安装和 package.json 以及 cnpm
包与 NPM 1. 包 Nodejs 中除了它自己提供的核心模块外,可以自定义模块,也可以使用第三方的模块.Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依 赖关系的模块进行统一管理. ...
- NPM安装报错:WARN PACKAGE.JSON, NO REPOSITORY FIELDS
今天在安装npm包时遇到了这个错误,出现如下提示: npm WARN package.json xxx@0.0.0 No repository field. npm WARN package.json ...
- [NPM] Set default values for package.json using npm set
Npm by default uses global values when initializing a new package.json file. Learn how to set your o ...
- Python3 学习第十三弹: 模块学习五之pickle与json
对于python来说,这两个模块是十分实用的两个模块,以一种简单的方法用于储存数据实例. pickle模块 提供用来储存Python各种数据序列化存储 # 原来的cPickle已经在python3中与 ...
- 在package.json中配置Script执行npm run tslint报错问题
今天在学习tslint的时候,按照git clone下angular2-webpack-starter的代码执行npm run lint时,虽然代码进行了检测,但检测完成后npm始终报错, //pac ...
- node学习: package.json
package.json 定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据) 1.创建 package.json npm init npm init –yes 2.p ...
- npm安装package.json中的模块依赖
npm 一键安装 package.json里的依赖时有2种情况: 1.package.json不存在时 运行命令: npm init可自动创建package.json文件 2.package.json ...
- 对package.json的理解和学习
一.初步理解 1. npm安装package.json时 直接转到当前项目目录下用命令npm install 或npm install --save-dev安装即可,自动将package.json中 ...
随机推荐
- R_Studio(关联)对dvdtrans.csv数据进行关联规则分析
dvdtrans.csv数据:该原始数据仅仅包含了两个字段(ID, Item) 用户ID,商品名称(共30条) #导入arules包 #install.packages("arules&qu ...
- ping不通服务器就邮件警告
ping不通服务器就发一封邮件 (单台) vim /root/scipt/1.sh #!/bin/bash ping -c 4 192.168.0.116 &> /dev/null #p ...
- 如何基于String实现同步锁?
在某些时候,我们可能想基于字符串做一些事情,比如:针对同一用户的并发同步操作,使用锁字符串的方式实现比较合理.因为只有在相同字符串的情况下,并发操作才是不被允许的.而如果我们不分青红皂白直接全部加锁, ...
- web 多屏互动显示方案
1 基于 local storage 实现的信息传递 相关插件 lsbridge.js https://github.com/krasimir/l... 且项目中有非常简单易懂的示例你需要了解的一些关 ...
- LeetCode 60. 第k个排列(Permutation Sequence)
题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "1 ...
- (组件的)状态(state)和属性(props)之间有何不同
State 是一种数据结构,用于组件挂载时所需数据的默认值.State 可能会随着时间的推移而发生突变,但多数时候是作为用户事件行为的结果.Props(properties 的简写)则是组件的配置.p ...
- Git-Runoob:Git 服务器搭建
ylbtech-Git-Runoob:Git 服务器搭建 1.返回顶部 1. Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看 ...
- Nova 启动虚拟机流程解析
目录 文章目录 目录 前言 从请求说起 nova-api service 阶段 前言 Nova 启动虚拟机的东西太多,持续更新- 从请求说起 无论是通过 Dashboard 还是 CLI 启动一个虚拟 ...
- 运行RGB-DSLAM的一些报错及处理方法
part 4 报错‘create’ is not a menber of 'CV::FeatureDetector::create(detector.c_str()); 查看opencv版本 修改Cm ...
- java script 的注释与分号
// 单行注释 /**/多行注释 在js 中 变量.函数和操作符都是区分大小写的 什么是标识符 变量.函数.属性的名字.或者函数的参数. 变量的命名规范:不能以数字开头. 变量声明: var nam ...