美文网首页nodejs
package.json文件

package.json文件

作者: YINdevelop | 来源:发表于2017-10-23 15:16 被阅读187次

    1.概述

    每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需的模块,将package.json中的模块安装到node-modules文件夹下,也就是配置项目所需的运行和开发环境。

    生成package.json文件

    package.json文件可以手工编写,也可以使用npm init命令自动生成。这个命令采用互动方式,要求用户回答一些问题,然后在当前目录生成一个基本的package.json文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的。注:如果你一路按回车确认感觉有些麻烦,你可以直接加一个-y参数,这样npm就直接给我们生成了,即npm init -y有了package.json文件,直接使用npm install命令,就会在当前目录中安装所需要的模块。

    如果一个模块不在package.json文件之中,可以单独安装这个模块,并使用相应的参数,将其写入package.json文件之中。

    $ npm install express --save
    $ npm install express --save-dev
    

    package.json里面不能有注释,有会报错

    2.name

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

    name属性就是你的模块名称

    3.version

    项目版本

    4.description

    一个描述,方便别人了解你的模块作用,搜索(npm search)的时候也有用,格式为字符串

    5.keywords

    关键字。方便使用者在 npm search中搜索。格式为字符串

    6.scripts字段

    npm 允许在package.json文件里面,使用scripts字段定义脚本命令。

    {
      // ...
      "scripts": {
        "build": "node build.js",
        "preinstall": "echo here it comes!"
      }
    }
    

    上面代码build命令对应的脚本是node build.js。

    命令行下使用npm run命令,就可以执行这段脚本

    $ npm run build
    # 等同于执行
    $ node build.js
    

    这些定义在package.json的命令(scripts)就称为 npm 脚本。它的优点很多。

    1.npm 提供的很多辅助功能。

    2.用户不需要知道怎么测试你的项目,只要运行npm run test即可。

    查看当前项目的所有 npm 脚本命令,可以使用的npm run命令。

    $ npm run
    

    7.dependencies字段

    dependencies字段指定了项目运行所依赖的模块,格式为对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。

    "deependencies": {
        "browserify": "~13.0.0",
        "karma-browserify": "~5.0.1"
    }
    

    版本格式如下:

    1.指定版本:比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。

    2.波浪号(~)+指定版本:比如~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,也就是说安装时不改变大版本号和次要版本号

    3.插入号(^)+指定版本:比如^1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。

    4.latest:安装最新版本。

    8.devDependencies字段

    devDependencies指定项目开发所需要的模块,格式为对象。该对象的各个成员和dependencies字段的相同。

    9.安装dependencies字段和dependencies字段

    package.json文件可以手工编写,也可以使用npm init命令自动生成。

    $ npm init
    

    这个命令采用互动方式,要求用户回答一些问题,然后在当前目录生成一个基本的package.json文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的。

    有了package.json文件,直接使用npm install命令,就会在当前目录中安装所需要的模块。

    $ npm install
    

    如果一个模块不在package.json文件之中,可以使用相应的参数,单独安装这个模块,安装后会自动写入package.json文件之中。

    --save参数表示将该模块写入dependencies属性,--save-dev表示将该模块写入devDependencies属性。

    $ npm install express --save
    $ npm install express --save-dev
    

    上面代码表示单独安装express模块。

    注意:dependencies可以叫做线上依赖,devDependencies叫做开发依赖,区别举个例子来说,使用webpack开发一个vue项目,需要依赖vue,以及一些编译过程中的需要的sass插件等,开发完打包时,vue属于线上依赖,sass插件属于开发依赖,打包时候nodejs会根据--save还是--save-dev来判断,线上依赖会一起打包到项目里面,开发依赖不会打包。

    10.engines 字段

    指明了该项目所需要的node.js版本。也可以指定适用的npm版本

     "engines": {
        "node": ">= 4.0.0",
        "npm": ">= 3.0.0"
      },
    

    11.Repository字段

    用于指示源代码存放的位置

    "repository" :{
       "type" : "git",
       "url" : "http://github.com/npm/npm.git"
     }
     
    "repository" :{
       "type" : "svn",
       "url" : "http://v8.googlecode.com/svn/trunk/"
     }
    

    12.browserslist

    众所周知为兼容所有浏览器,有的CSS属性需要对不同的浏览器加上前缀。

    Autoprefixer使用Browserlist来确定哪些浏览器版本将得到支持从而添加前缀。格式为数组。

     "browserslist": [
        "> 1%", //全球有超过1%的人使用的浏览器
        "last 2 versions", //根据CanIUse.com追踪的最后两个版本的所有浏览器
        "not ie <= 8" // 不支持ie8及以下
      ]
    

    13.private

    设为true这个包将不会发布到NPM平台下。

    相关文章

      网友评论

        本文标题:package.json文件

        本文链接:https://www.haomeiwen.com/subject/lydauxtx.html