Node.js中package.json文件的功能

基础知识 04/14 阅读 77 views次 人气 0
摘要:

package.json文件只记录通过npm install方式安装的模块信息,而这些模块所依赖的其他子模块的信息不会记录。

package.json文件记录项目中所需要的所有模块。

当执行npm install的时候,node会先从package.json文件中读取所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块进行对比,没有的直接下载,已有的检查更新。


{
    //项目名称
    "name": "demo",
    //版本号(遵守“主版本.次要版本.补丁号”的格式
    "version": "1.0.0",
    //description描述你的模块,或者搜索
    "description": "vue.js js iview ",
    //main字段指定了加载的入口文件,即主文件
    "main": "app.js",
    // scripts指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm start时,所要执行的命令。
    "scripts": {
        "start": "node index.js"
    },
    //repository(仓库)指定一个代码存放地址
    "repository": {
        "type": "git",
        "url": "git+https://github.com/XXXX"
    },
    //作者
    "author": "mayuan",
    //授权方式
    "license": "MIT",
    //指明node.js运行所需要的版本
    "engines": {
        "node": "0.10.x"
    },
    "bugs": {
        "url": "https://github.com/XXXX"
    },
    // 一个字符串数组,方便别人搜索到本模块
    "keywords": [
        "vue","iview"
    ],
 
    //devDependencies指定项目开发所需要的模块
    "devDependencies": {
        "babel-core": "^6.23.1",
        "babel-loader": "^6.3.2",
        "babel-preset-es2015": "^6.22.0",
        "vue-html-loader": "^1.0.0",
        "vue-loader": "^8.5.2",
        "vue-style-loader": "^1.0.0",
        "webpack": "^1.13.2"
    },
    //dependencies字段指定了项目运行所依赖的模块
    "dependencies": {
        "express": "latest", //指定express是最新版本
        "mongoose": "~3.8.3",
        "handlebars-runtime": "~1.0.12",
        "express3-handlebars": "~0.5.0",
        "MD5": "~1.2.0"
    }
}


package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新。 


因此,正因为有了package-lock.json文件锁定版本号,所以当你执行npm install的时候,node不会自动更新package.json文件中的模块,必须用npm install packagename(自动更新小版本号)或者npm install packagename@x.x.x(指定版本号)来进行安装才会更新,package-lock.json文件中的版本号也会随着更新。


附:当package.json与package-lock.json都不存在,执行"npm install"时,node会重新生成package-lock.json文件,然后把node_modules中的模块信息全部记入package-lock.json文件,但不会生成package.json文件,此时,你可以通过"npm init --yes"来生成package.json文件。


package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json. It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates.


package-lock.json是当 node_modules 或 package.json 发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新。


评论

表情

分享到: