使用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 -yesnpm 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.js

  • dependencies:生产依赖

  • 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文件中的devDependencies:npm install <package_name> --save-dev

管理依赖版本

npm使用语义版本控制,或者正如我们经常提到的SemVer,来管理包的版本和版本范围。

如果你有一个package.json文件在你的目录中并且运行npm install,npm将查看该文件中dependencies列出的,并使用语义版本控制下载最新版本。

更多内容

package.json

【npm】伙计,给我来一杯package.json!不加糖

npm学习(五)之使用package.json的更多相关文章

  1. 关于npm 淘宝镜像 以及package.json里包的更新

    1.淘宝镜像的设置 npm config set registry https://registry.npm.taobao.org npm config set disturl https://npm ...

  2. Nodejs 包与 npm第三方模块安装和 package.json 以及 cnpm

    包与 NPM 1. 包 Nodejs 中除了它自己提供的核心模块外,可以自定义模块,也可以使用第三方的模块.Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依 赖关系的模块进行统一管理. ...

  3. NPM安装报错:WARN PACKAGE.JSON, NO REPOSITORY FIELDS

    今天在安装npm包时遇到了这个错误,出现如下提示: npm WARN package.json xxx@0.0.0 No repository field. npm WARN package.json ...

  4. [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 ...

  5. Python3 学习第十三弹: 模块学习五之pickle与json

    对于python来说,这两个模块是十分实用的两个模块,以一种简单的方法用于储存数据实例. pickle模块 提供用来储存Python各种数据序列化存储 # 原来的cPickle已经在python3中与 ...

  6. 在package.json中配置Script执行npm run tslint报错问题

    今天在学习tslint的时候,按照git clone下angular2-webpack-starter的代码执行npm run lint时,虽然代码进行了检测,但检测完成后npm始终报错, //pac ...

  7. node学习: package.json

    package.json 定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据) 1.创建 package.json npm init npm init –yes 2.p ...

  8. npm安装package.json中的模块依赖

    npm 一键安装 package.json里的依赖时有2种情况: 1.package.json不存在时 运行命令: npm init可自动创建package.json文件 2.package.json ...

  9. 对package.json的理解和学习

    一.初步理解 1. npm安装package.json时  直接转到当前项目目录下用命令npm install 或npm install --save-dev安装即可,自动将package.json中 ...

随机推荐

  1. flink⼿手动维护kafka偏移量量

    flink对接kafka,官方模式方式是自动维护偏移量 但并没有考虑到flink消费kafka过程中,如果出现进程中断后的事情! 如果此时,进程中段: 1:数据可能丢失 从获取了了数据,但是在执⾏行行 ...

  2. kali修改更新源及更新

    进入源文件进行修改 leafpad /etc/apt/sources.list (其实系统本身就自带了更新源,去掉其注释也是可以的,现在官方源的下载速度也还ok,下面的三选一亦可) #kali官方源 ...

  3. [CSP-S模拟测试]:集合合并(记忆化搜索)

    题目传送门(内部题133) 输入格式 第一行一个正整数$n$. 第二行$n$个正整数$a_i$,表示一开始有$S_i=\{a_i\}$ 输出格式 输出一个非负整数表示最大的收益之和 样例 样例输入: ...

  4. linux 下使用命令查看jvm信息

    java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...

  5. TensorFlow写的神经网络不work的原因

    for epoch in range(training_steps): with tf.Session() as sess: sess.run(tf.global_variable_initializ ...

  6. Understanding the Transform Function in Pandas

    Understanding the Transform Function in Pandas 来源 What is transform? 我在 Python Data Science Handbook ...

  7. MyOD C语言代码实现

    Myod C语言实现 一.题目要求 1 复习c文件处理内容 2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Ma ...

  8. (组件的)状态(state)和属性(props)之间有何不同

    State 是一种数据结构,用于组件挂载时所需数据的默认值.State 可能会随着时间的推移而发生突变,但多数时候是作为用户事件行为的结果.Props(properties 的简写)则是组件的配置.p ...

  9. leetcode-easy-string-387 First Unique Character in a String

    mycode  24.42% class Solution: def firstUniqChar(self, s: str) -> int: dic = {} for i in range(le ...

  10. LeetCode 5——最长回文子串

    1. 题目 2. 解答 我们定义状态 state[i][j] 表示子串 s[i, j] 是否为回文子串,如果 s[i, j] 为回文子串,并且有 s[i-1] == s[j+1],那么 s[i-1, ...