title: '前端开发系列077-Node篇之package'
tags:
- Node系列
categories: []
date: 2018-07-24 23:20:13
本文输出Node中和包有关的基本内容。
一、Node中的模块和包
模块 在Node中,以模块为单位来划分所有的功能。从某种角度来说,Node应用都由大量模块组成,每个模块都是一个JavaScript文件。Node提供了完成的模块加载机制,模块
和模块加载机制
这种设计让我们能够将应用程序划分成多个不同的部分,可以对这些部分进行协同管理,还能够处理:
- 提高应用程序的开发效率
- 提高应用程序代码的可读性
- 减少应用程序的代码量(重用代码)
包
在Node中,通过包来对一组具有相互依赖关系的模块进行统一管理
Node中的包事实上所指代的是一个文件目录,该目录中主要包含以下内容
> ① 在`bin`子目录中存放二进制文件。
> ② 在`lib`子目录中存放JavaScript文件。
> ③ 在`doc`子目录中存放与包使用相关的说明性文档。
> ④ 在`dist`子目录中存放JavaScript文件(发布)。
> ⑤ 在`test`子目录中存放用于对包进行单元测试的文件。
> ⑥ 在包的根目录中存放包含用于描述包信息的`package.json`文件。
这里列出典型的包的目录结构
//该目录结构通过使用$ npm install less命令安装并进入到less包文件目录获取。
.
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Gruntfile.js
├── LICENSE
├── README.md
├── appveyor.yml
├── bin
│ └── lessc
├── bower.json
├── browser.js
├── dist
│ ├── less.js
│ └── less.min.js
├── index.js
├── lib
│ ├── less
│ ├── less-browser
│ ├── less-node
│ └── source-map
├── package.json
└── test
├── browser
├── copy-bom.js
├── css
├── data
├── import-module
├── index.js
├── less
├── less-bom
├── less-test.js
├── modify-vars.js
├── plugins
└── sourcemaps
二、package.json文件
package.json
文件用于对包进行描述,JSON格式文件。
name 包的名称 scripts 定义脚本命令。 main 包的主文件。 version 包的版本号。 homepage 包的主页地址。 bugs bug的提交地址,可能是url地址或邮箱地址。 author 作者信息(对象),包含作者姓名(`name`)和主页(`url`)以及邮箱(`email`)等。 license 该包采用的开源协议,常见的有MIT、Apache 和GPL等 keywords 用于搜索的关键字数组( `$ npm search xxx`) description 包描述信息,对包进行简单的说明。 repository 托管仓库相关的信息,通常包括仓库的类型(`type`)和托管地址(`url`)。 dependencies 运行时需要依赖的包(对象类型:由包名和版本信息组成)。 devDependencies 开发时需要依赖的包(对象类型:由包名和版本信息组成),上线时不会打包。package.json文件的主要字段
这里列出典型的json文件的内容:
//备注:列出的是jQuery框架的package.josn文件,可通过$ npm install jquery安装
{
"author": {
"name": "JS Foundation and other contributors",
"url": "https://github.com/jquery/jquery/blob/3.3.1/AUTHORS.txt"
},
"bugs": {
"url": "https://github.com/jquery/jquery/issues"
},
"bundleDependencies": false,
"commitplease": {
"nohook": true,
"components": [
"Docs",
"Tests",
"Build",
"Support",
"Release",
"Core",
"Ajax",
"Attributes",
"Callbacks",
"CSS",
"Data",
"Deferred",
"Deprecated",
"Dimensions",
"Effects",
"Event",
"Manipulation",
"Offset",
"Queue",
"Selector",
"Serialize",
"Traversing",
"Wrap"
],
"markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)",
"ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])"
},
"dependencies": {},
"deprecated": false,
"description": "JavaScript library for DOM operations",
"devDependencies": {
"babel-core": "7.0.0-beta.0",
"babel-plugin-transform-es2015-for-of": "7.0.0-beta.0",
"commitplease": "2.7.10",
"core-js": "2.4.1",
"eslint-config-jquery": "1.0.1",
"grunt": "1.0.1",
"grunt-babel": "7.0.0",
"grunt-cli": "1.2.0",
"grunt-compare-size": "0.4.2",
"grunt-contrib-uglify": "3.0.1",
"grunt-contrib-watch": "1.0.0",
"grunt-eslint": "20.0.0",
"grunt-git-authors": "3.2.0",
"grunt-jsonlint": "1.1.0",
"grunt-karma": "2.0.0",
"grunt-newer": "1.3.0",
"grunt-npmcopy": "0.1.0",
"gzip-js": "0.3.2",
"husky": "0.14.3",
"insight": "0.8.4",
"jsdom": "5.6.1",
"karma": "1.7.0",
"karma-browserstack-launcher": "1.3.0",
"karma-chrome-launcher": "2.2.0",
"karma-firefox-launcher": "1.0.1",
"karma-qunit": "1.2.1",
"load-grunt-tasks": "3.5.2",
"native-promise-only": "0.8.1",
"promises-aplus-tests": "2.1.2",
"q": "1.5.0",
"qunit-assert-step": "1.0.3",
"qunitjs": "1.23.1",
"raw-body": "2.2.0",
"requirejs": "2.3.3",
"sinon": "2.3.7",
"sizzle": "2.3.3",
"strip-json-comments": "2.0.1",
"testswarm": "1.1.0",
"uglify-js": "3.3.4"
},
"homepage": "https://jquery.com",
"keywords": [
"jquery",
"javascript",
"browser",
"library"
],
"license": "MIT",
"main": "dist/jquery.js",
"name": "jquery",
"repository": {
"type": "git",
"url": "git+https://github.com/jquery/jquery.git"
},
"scripts": {
"build": "npm install && grunt",
"commitmsg": "node node_modules/commitplease",
"jenkins": "npm run test:browserless",
"precommit": "grunt lint:newer qunit_fixture",
"start": "grunt watch",
"test": "grunt && grunt test:slow && grunt karma:main",
"test:browser": "grunt && grunt karma:main",
"test:browserless": "grunt && grunt test:slow"
},
"title": "jQuery",
"version": "3.3.1"
}
标签:Node,077,less,js,jquery,nbsp,grunt,前端开发
From: https://www.cnblogs.com/wendingding/p/16984235.html