• nodejs之package.json


    nodejs项目的根目录下面,一般都会有package.json文件,定义了这个项目中所需各种模板及项目中的配置信息。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目中所需的运行和开发环境。
    仔细观察package.json文件可以发现其内部就是一个json对象,该对象的每一个成员就是当前项目的一项设置。

    基础 

    Package.json是一个json文件。

    npm init 可根据提示创建package.json模板。

    {                                                         
      "name": "example",                                      
      "version": "1.0.0",                                     
      "description": "A simple example",                      
      "main": "index.js",                                     
      "scripts": {                                            
        "test": "echo "Error: no test specified" && exit 1" 
      },                                                      
      "author": "",                                           
      "license": "ISC" 
    }

    package.json属性描述:

    name: 软件包名称。

    author:作者名称,可进一步包含nameemailurl属性。

    contributors:贡献者名称数组

    bugs:链接到软件包的问题追踪器,最常用的是githubissues页面。

    homepages:软件包的主页。

    version:指定软件包的当前版本,一般从1.0.0开始,依次是主版本号,次版本号,补丁版本号。

    license:软件包的许可证,一般MIT

    keywords:包含软件包功能相关的关键字数组,有助于搜索到此软件包。

    description:描述。

    repository:软件包仓库所在的位置。也可为typeurl的组合:

    "repository":{
      "type":"git",
      "url":"https://github.com/nodejscn/node-api-cn.git"
    }

    main:软件包的入口点,当在应用程序中导入此软件包时,应用程序会在该位置搜索模块的导出。如:"main":"src/main.js"

    bin:将模块中的一个或多个可执行文件配置到PATH路径下,使npm可执行。

    { "bin" : { "myapp" : "./cli.js" } }

    当安装myappnpm会从cli.js文件创建一个到/usr/local/bin/myapp路径下。

    private:设置为ture,以防止应用程序/软件包被意外发布到npm上。

    scripts:定义一组可以运行的node命令,通过npm run xxxyarn xxx运行命令。可以为命令使用任何的名称,脚本也可以是任何操作。脚本位于本地项目内node_modules/.bin下。

    "scripts": {
      "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
      "start": "npm run dev",
      "unit": "jest --config test/unit/jest.conf.js --coverage",
      "test": "npm run unit",
      "lint": "eslint --ext .js,.vue src test/unit",
      "build": "node build/build.js"
    }

    dependencies:依赖包列表。当使用npmnpm install packageName)或yarnyarn add packageName)安装软件包时,该软件包会自动插入此列表中。

    devDependencies:开发依赖包列表,仅安装在开发机器上,而无需在生产环境中运行代码。当使用npmnpm install --dev packageName)或yarnyarn add --dev packageName)安装软件包时,该软件包会自动地插入此列表中。

    engines:设置node.js或其他命令的版本:

    "engines":{
      "node":">= 6.0.0",
      "npm":">= 3.0.0",
      "yarn":"^0.13.0"
    }

    browserslist:支持哪些浏览器,BabelAutoprefixer 和其他工具会用到它,以将所需的 polyfill fallback 添加到目标浏览器 

    "browserslist": [
      "> 1%",
      "last 2 versions",
      "not ie <= 8"]

    此配置意味着需要支持使用率超过 1%(来自 CanIUse.com 的统计信息)的所有浏览器的最新的 2 个主版本,但不含 IE8 及更低的版本。

    package-lock.json 

    package-lock.json会固化当前安装的每个软件包的版本,当运行npm install时,npm会使用这些确切的版本。

    当运行npm update时,package-lock.json文件中的依赖的版本会被更新。 

    软件包版本

    鉴于使用了 semver(语义版本控制),所有的版本都有 3 个数字,第一个是主版本,第二个是次版本,第三个是补丁版本,具有以下规则: 

    ~: 如果写入的是 〜0.13.0,则只更新补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
    ^: 如果写入的是 ^0.13.0,则要更新补丁版本和次版本:即 0.13.1、0.14.0、依此类推。
    *: 如果写入的是 *,则表示接受所有的更新,包括主版本升级。
    >: 接受高于指定版本的任何版本。
    >=: 接受等于或高于指定版本的任何版本。
    <=: 接受等于或低于指定版本的任何版本。
    <: 接受低于指定版本的任何版本。
    还有其他的规则:
    无符号: 仅接受指定的特定版本。
    latest: 使用可用的最新版本。 

    还可以在范围内组合以上大部分内容,例如:1.0.0 || >=1.1.0 <1.2.0,即使用 1.0.0 或从 1.1.0 开始但低于 1.2.0 的版本。

    更新package.json

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

    npm install ejs --save
    npm install ejs --save-dev

    --save表示将该模块写入dependencies属性,--save -dev表示将该模块写入devDependencies属性,同时省略则表示不写入package.json文件中。

     

    参考: 

    1. Nodejs中文 http://nodejs.cn/learn package.json指南

    2. nodejs package.json详解

  • 相关阅读:
    spring boot 2.0.3+spring cloud (Finchley)2、搭建负载均衡Ribbon (Eureka+Ribbon+RestTemplate)
    spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群
    windows下安装redis
    Spring注解@Resource和@Autowired的区别
    spring常用管理bean注解
    maven中package和install命令的区别
    SpringBoot打war包并部署到tomcat下运行
    使用jquery.qrcode生成二维码及常见问题解决方案
    动态生成二维码插件 jquery.qrcode.js
    Notepad++的列编辑功能
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/13248997.html
Copyright © 2020-2023  润新知