package.json---入门说明

直接的说:就是管理你本地安装的npm包 
一个package.json文件可以做如下事情:

展示项目所依赖的npm包 
允许你指定一个包的版本[范围] 
让你建立起稳定,意味着你可以更好的与其他开发者共享

创建package.json

在你要创建的目录下执行:npm init,系统会一一提示设置相关配置。提示设置的字段均为必填字段(有的可以用回车键,即设置为空带过)

  • npm init –yes|-y: 执行此命令,则会直接创建一个package.json,只配置了一些必填字段,并且给出默认值。其中name: 所处的文件夹名称

package.json配置说明

这里说的项目广义,比如:我们可以把我们的项目发布成一个npm包

  • name: 项目名称
  • version: 项目版本号
  • description: 项目描述
  • keywords: {Array}关键词,便于用户搜索到我们的项目
  • homepage: 项目url主页
  • bugs: 项目问题反馈的Url或email配置,如: 
    {  
    “url” : “https://github.com/owner/project/issues“, 
    “email” : “project@hostname.com” 
    }

  • license: 项目许可证,让使用者知道是如何被允许使用此项目。默认是”ISC”

  • author,contributors: 作者和贡献者。格式设置如下: 
    { “name” : “Barney Rubble” 
    , “email” : “b@rubble.com” 
    , “url” : “http://barnyrubble.tumblr.com/” 
    }

  • files: 包含在项目中的文件数组。如果在数组里面声明了一个文件夹,那也会包含文件夹中的文件。可以声明一些规则来忽略部分文件。可以在项目根目录或者子目录里声明一个.npmignore。

Certain files are always included, regardless of settings:

package.json 
README (and its variants) 
CHANGELOG (and its variants) 
LICENSE / LICENCE 
Conversely, some files are always ignored:

.git 
CVS 
.svn 
.hg 
.lock-wscript 
.wafpickle-N 
*.swp 
.DS_Store 
._* 
npm-debug.log

    • main: 主文件。比如默认是index.js,项目名称叫mymodule。那么require(‘mymodule’)将返回index.js返回的内容
    • bin: 项目用到的可执行文件配置
    • man: 指定一个单一的文件名或一个文件名数组。意思类似于linux命令中的man 命令,来查看一个命令的用法 

      如果只给man字段提供一个文件,则安装完毕后,它就是man 的结果,这和此文件名无关 


      “name”: “foo”, 
      “version”: “1.2.3”, 
      “description”: “A packaged foo fooer for fooing foos”, 
      “main”: “foo.js”, 
      “man”: “./man/doc.1” 

      上面这个配置将会在执行man foo时就会使用./man/doc.1这个文件。

如果指定的文件名并未以包名开头,那么它会被冠以前缀,像这样


“name”: “foo”, 
“version”: “1.2.3”, 
“description”: “A packaged foo fooer for fooing foos”, 
“main”: “foo.js”, 
“man”: [ 
“./man/foo.1”, 
“./man/bar.1” 


这将会为man foo和man foo-bar创建文件

man文件必须以一个数字结尾,和一个可选的.gz后缀(当它被压缩时)。这个数字说明了这个文件被安装到哪个节中


“name”: “foo”, 
“version”: “1.2.3”, 
“description”: “A packaged foo fooer for fooing foos”, 
“main”: “foo.js”, 
“man”: [ 
“./man/foo.1”, 
“./man/foo.2” 


会为使用man foo和man 2 foo而创建

  • directories: CommonJS Packages规范说明了几种你可以用directories对象来标示你的包结构的方法
  • directories.lib: 告诉你库文件夹的位置,目前没有什么地方需要用到lib文件夹,但是这是重要的元信息
  • directories.bin: 如果你在directories.bin中指定一个bin目录,在这个目录中的所有文件都会被当做在bin来使用。

    由于bin指令的工作方式,同时指定一个bin路径和设置directories.bin将是一个错误。如果你想指定独立的文件,使用bin,如果想执行某个文件夹里的所有文件,使用directories.bin。

  • directories.doc: 把markdown文件放在这。也许某一天这些文件将被漂亮地展示出来,不过这仅仅是也许

  • directories.man: directories.man指定的文件夹里都是man文件,系统通过遍历这个文件夹来生成一个man的数组
  • directories.example: 把示例脚本放在这。也许某一天会被用到
  • repository: 项目代码存放地方

    “repository” : 
    { “type” : “git” 
    , “url” : “https://github.com/npm/npm.git” 

    “repository” : 
    { “type” : “svn” 
    , “url” : “https://v8.googlecode.com/svn/trunk/” 
    }

  • scripts: 声明一系列npm脚本指令

    1. prepublish: 在包发布之前运行,也会在npm install安装到本地时运行
    2. publish,postpublish: 包被发布之后运行
    3. preinstall: 包被安装前运行
    4. install,postinstall: 包被安装后运行
    5. preuninstall,uninstall: 包被卸载前运行
    6. postuninstall: 包被卸载后运行
    7. preversion: bump包版本前运行
    8. postversion: bump包版本后运行
    9. pretest,test,posttest: 通过npm test命令运行
    10. prestop,stop,poststop: 通过npm stop命令运行
    11. prestart,start,poststart: 通过npm start命令运行
    12. prerestart,restart,postrestart: 通过npm restart运行
    13. "scripts": {

              "dev": "npm run start",

              "dist": "cross-env NODE_ENV=production node ./tools/script.js",

              "lint": "eslint src/ --ext .js,.vue && stylelint \"src/**/*.vue\" --syntax less",

              "lint:js": "eslint src/ --ext .js,.vue",

              "lint:style": "stylelint src/**/*.less --syntax less",

              "pub": "npm run dist",

              "start": "cross-env NODE_ENV=development node ./tools/script.js",

              "test": ""

          }

  • config: 配置项目中需要的配置参数:

    { “name” : “foo” 
    , “config” : { “port” : “8080” } 
    , “scripts” : { “start” : “node server.js” } } } 
    server.js中使用process.env.npm_package_config_port来访问port 
    用户也可以这样修改:npm config set foo:port 80

  • dependencies: 项目在生产环境中依赖的包

  • devDependencies: 项目在开发和测试环境中依赖的包
  • peerDependencies: 在某些情况下,当一个主机无法require依赖包时,你会想要告诉它还有哪些工具或库与这个依赖包兼容。这通常被成为一个插件。尤其是在host文档中声明的模块会暴露一个特定的接口


    “name”: “tea-latte”, 
    “version”: “1.3.5”, 
    “peerDependencies”: { 
    “tea”: “2.x” 


    这将确保tea-latte这个包只会和2.x版本的tea一起被安装。执行npm install tea-latte可能产生以下关系图: 
    ├── tea-latte@1.3.5 
    └── tea@2.2.0

  • bundledDependencies: {Array},发布时会被一起打包的模块

  • optionalDependencies: 如果一个依赖模块可以被使用, 同时你也希望在该模块找不到或无法获取时npm继续运行,你可以把这个模块依赖放到optionalDependencies配置中。这个配置的写法和dependencies的写法一样,不同的是这里边写的模块安装失败不会导致npm install失败。当然,这种模块就需要你自己在代码中处理模块确实的情况了,例如:

    try { 
    var foo = require(‘foo’) 
    var fooVersion = require(‘foo/package.json’).version 
    } catch (er) { 
    foo = null 

    if ( notGoodFooVersion(fooVersion) ) { 
    foo = null 

    // .. then later in your program .. 
    if (foo) { 
    foo.doFooThings() 
    }

  • engines: 声明项目需要的node或npm版本范围

    { “engines” : { “npm” : “~1.0.20” } } 
    { “engines” : { “node” : “>=0.10.3 <0.12” } }

  • os: 指定你的项目将运行在什么操作系统上

  • cpu: 指定你的项目将运行在什么cpu架构上
  • preferGlobal: 如果你的包需要全局安装,通过命令行来运行,那么设置为true。如果这个包被本地安装则会出现一个警告
  • private: 如果设置为true, 那么npm会拒绝发布它
  • publishConfig

转载于:https://www.cnblogs.com/Super-scarlett/p/8177871.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java多线程实战指南_学习笔记《Java多线程编程实战指南》二

2.1线程属性属性属性类型及用途只读属性注意事项编号(id)long型,标识不同线程是不适合用作唯一标识名称(name)String型&#xff0c;区分不同线程否设置名称有助于代码调试和问题定位线程类别(daemon)boolean型&#xff0c;true为守护线程&#xff0c;false为用户线程否在start方…

putty, puttycm区别

2019独角兽企业重金招聘Python工程师标准>>> 在windows上实现telnet, ssh等工具有几个方案可以选择, 本文总结了putty putty cm的方案, 并且简短地和 cygwin console2方案做了一下比较. 由于putty的安装 配置比较简单, 本文主要讨论了Putty cm的配置和中文的支持.…

思科网络基础之访问控制列表

loading....转载于:https://www.cnblogs.com/changha0/p/8185866.html

java编写日期_Java常用日期操作

//日期转字符串,根据需要调整格式Testpublic voidDateToString(){Date currentTime newDate();SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateStringformatter.format(currentTime);System.out.println(dateString);}字符串转…

使用jQuery Treeview插件实现树状结构效果

首先到一个国外网站上下载Treeview插件&#xff1a;http://bassistance.de/jquery-plugins/jquery-plugin-treeview/当然你也可以通过我博客的源文件直接下载&#xff1a;http://files.cnblogs.com/jishume/jquery_api_for_dw4.rar 为了形象一点&#xff0c;先看一个效果图&…

冲刺二周04

第四天&#xff1a; 昨天干什么&#xff1a;完成搜索界面 今天干什么&#xff1a;编写模糊查询搜索的代码 遇见什么问题&#xff1a;不熟悉 团队成员会议照&#xff1a; 转载于:https://www.cnblogs.com/ghl0518/p/8301051.html

[转]The Top 10 Attributes of a Great Programmer

With all the latest attention again on what does and doesn’t make a good programmer, I couldn’t help but put together my own top 10 list. Being a great problem solver.Being driven and lazy at the same time.Ability to understand other people’s codeHaving…

zabbix查看mysql同步_Zabbix 检测Mysql数据库的主从同步

在高并发网站架构中&#xff0c;MySQL数据库主从同步是不可或缺的&#xff0c;不过经常会发生由于网络原因或者操作错误&#xff0c;MySQL主从经常会出现不同步的情况&#xff0c;那么如何监控MySQL主从同步&#xff0c;也变成检测网站正常运行的重要环节。MySQL同步功能由3个线…

LeetCode String Compression

原题链接在这里&#xff1a;https://leetcode.com/problems/string-compression/description/ 题目&#xff1a; Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Every elem…

瀑布模型 原型模型 增量模型 螺旋模型的优缺点

瀑布模型的优点&#xff1a;有利于大型软件开发过程中人员的组织、管理&#xff0c;有利于软件开发方法和工具的研究&#xff0c;从而提高了大型软件项目开发的质量和效率。瀑布模型的缺点&#xff1a;&#xff08;1&#xff09;开发过程一般不能逆转&#xff0c;否则代价太大&…

二手手机交易平台使用MYSQL的方法_安卓Android校园淘(二手交易)APP设计与实现(MySQL)...

安卓Android校园淘(二手交易)APP设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文14000字,程序代码,MySQL数据库)本项目就是一个基于Android平台的校园淘APP设计&#xff0c;采用了Struts技术&#xff0c;JDBC技术和Android的基础技术完成开发。收录了…

频繁项集-------产生强关联规则的过程

频繁项集------->产生强关联规则的过程 1.由Apriori算法&#xff08;当然别的也可以&#xff09;产生频繁项集 2.根据选定的频繁项集&#xff0c;找到它所有的非空子集 3.强关联规则需要满足最小支持度和最小置性度 &#xff08;假设关联规则是&#xff1a;A>B &#…

ADSL之PPPOE

大家好&#xff01;我是书记&#xff0c;今天我来小谈一下网络中的PPPOE技术。 PPPOE&#xff08;Point to Point Protocol over Ethernet&#xff09;以太网点到点协议&#xff0c;简单的说&#xff0c;是以太网协议和PPP协议结合后所产生的协议&#xff0c;是在PPP协…

java标号

标号用于控制循环执行流程&#xff1a; public static void main(String[] args) {mark:for(int i 0; i < 3; i) {System.out.printf("i %d\n", i);for (int j 0; j < 3; j) {System.out.printf("j %d\n", j);if (i 1 && j 1) {//brea…

LAMP环境下ECShop系统部署

作业环境服务器端&#xff1a;RHEL6.0 IP&#xff1a;10.8.110.8 客户端&#xff1a;Windows 7 IP&#xff1a;10.8.110.28 一、ECShop简介 ECShop是上海商派网络科技有限公司&#xff08;ShopEx&#xff09;旗下——B2C独立网店系统&#xff0c;适合企业及个人快速构建个…

date js 半年_JavaScript Date对象

Date对象源码下载最初接触编程&#xff0c;没有接触过非常讲究时间控制的领域&#xff0c;往往对时间没有概念&#xff0c;单片机编程&#xff0c;嵌入式开发&#xff0c;操作系统&#xff0c;无人及姿态控制往往会关注毫秒ms、微秒us级的时间概念。什么是并行&#xff0c;什么…

SQL Server代理的阶梯 - 第2级:作业步骤和子系列

作者&#xff1a;Richard Waymire&#xff0c;2017/10/11&#xff08;第一版&#xff1a;2011/02/17&#xff09; 原文链接&#xff1a;http://www.sqlservercentral.com/articles/SQLAgent/JobStepsandSubsystems/72268/ 该系列 本文是“Stairway系列&#xff1a;SQL Server代…

java动画闪烁_优化Java动画编程中的显示效果

Java动画编程有多种实现方法&#xff0c;但它们实现的基本原理是一样的&#xff0c;即在屏幕上画出一系列的帧来造成运动的感觉。Java多线程技术是Java动画编程中普遍运用的技术&#xff0c;它在控制动画程序的流程和动画的显示效果方面起着重要的作用。Java动画编程中的动画闪…

Visual C++ 2011-5-20

一.LockFile和UnlockFile 锁定文件部分区域&#xff0c;防止其他程序进行该部分区域的读写 #include <windows.h> #include <stdio.h>void main() {HANDLE hFile;HANDLE hAppend;DWORD dwBytesRead, dwBytesWritten, dwPos;BYTE buff[4096];// Open the existin…

如何快速将文本中的tab更换成逗号(图文详解)

不多说&#xff0c;直接上干货&#xff01; 现有一份数据如下。 下载日志数据并分析 到搜狗实验室下载用户查询日志 1) 介绍 搜索引擎查询日志库设计为包括约1个月(2008年6月)Sogou搜索引擎部分网页查询需求及用户点击情况的网页查询日志数据集合。为进行中文搜索引擎用户行为…