初学Node(二)package.json文件
package.json简介
package.json在Node项目中用于描述项目的一些基本信息,以及依赖的配置,一般每一个Node项目的根目录下都有一个package.json文件。
在项目的根目录中我们可以通过npm init来初始化一个package.json文件,其内容是一个Json对象,基本结构如下:
{
"name": "package",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
package.json文件中包含了很多的属性,这些属性都是项目的一些基本信息以及一些配置信息,这里是一些更详细的信息,着重介绍一些我们经常用到的属性。
name main属性
name和version属性是package.json文件两个不可或缺的属性,通常name属性和我们项目的文件名称是一样的,version表示这个项目的版本号。
main属性指定了加载时的入口文件,当使用require()语法来加载一个模块时,就会查看package.json文件的main属性,main属性的属性值就是要加载的模块。
在桌面新建一个文件夹(模块)命名为factory,在该文件夹内新建一个index.js文件,在index.js文件中写入以下代码:
function create(){
var product = "我是一个产品";
return product;
}
exports.create = create;
然后在桌面上新建一个store文件夹,在该文件夹内新建一个store.js文件,在store.js文件中写入以下代码:
var factory = require("../factory");
var product = factory.create();
console.log(product);
在命令行中进入store文件夹输入node store.js,可以发现运行成功,在store.js中通过require()函数加载factory模块时如果没有package.json文件,默认就会加载模块中的index.js文件。如果存在package.json文件这样在require()加载一个模块时,就会读取package.json文件的main属性,main属性指定的入口文件就是require()要加载的文件:
现在通过命令行进入factory文件通过npm init命令初始化一个package.json文件,将package.json文件的main属性改为demo.js,然后在将factory文件内的index.js文件改名为demo.js,然后在命令行中进入store文件在执行node store.js,仍然是可以成功运行的。
scripts属性
scripts属性可以指定npm命令缩写。在store文件夹中初始化package.json文件,然后添加scripts属性:

执行npm run start仍然可以运行成功,通过scripts属性npm run start等价于node store.js。
关于scripts的更具体的使用请看这里。
dependencies devDependencies属性
当我们在命令行中执行npm install jquery -save时会在当前目录下新建一个node_modules文件夹,将jquery下载到node_modules文件内,并将该模块的依赖写入到dependencies内。如果执行npm install react -save-dev时会将react下载到node_modules文件下并将依赖写入到devDependencies内。
"dependencies": {
"jquery": "^3.1.1"
},
"devDependencies": {
"react": "^15.3.2"
}
如果在写入依赖之后我们删除node_module文件,然后执行npm install就会读取package.json文件的dependencies和devDependencies属性自动下载写入的依赖模块。
初学Node(二)package.json文件的更多相关文章
- node中 package.json 文件说明
1.概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文 ...
- node.js 中的package.json文件怎么创建?
最近在用webstorm和nodejs做一些东西,老是各种混乱,今天上午创建一个新的项目,结果发现,npm init之后,并没有出现package.json,并没有太明确他的功能的小姑娘表示十分的惊慌 ...
- 通过node指令自动创建一个package.json文件,并封装发布使用
通过node指令自动创建一个package.json文件,并封装发布使用:https://blog.csdn.net/scu_cindy/article/details/78208268
- node 通过指令创建一个package.json文件及npm安装package.json
描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...
- node 通过指令创建一个package.json文件
描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license ...
- npm init node 通过指令创建一个package.json文件及npm安装package.json
描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...
- Nodejs package.json文件介绍
每个npm的安装包里面都会包含一个package.json,通常这个文件会在包的根目录下. 这个文件很类似于.net项目中的.csproj+AssemblyInfo.cs+App.config文件,主 ...
- package.json文件配置信息
1.概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文 ...
- npm package.json文件解读
每个Nodejs项目的根目录下面,一般都会有一个package.json文件.该文件可以由npm init生成,定义了项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据). pa ...
随机推荐
- Qt的零碎知识
1.QObject是所有Qt对象的基类,他给C++的类带来了若干新的功能.使用Q_OBJECT宏能声明一个C++类为一个QObject.如: class Notepad : public QMainW ...
- KIS旗舰版常用数据表
select * from IC_Web2ERPOrders --网上订单 FOrderStatus 14--已发货,6--待发货,2--待配货,1--未审核 (审核后变为2,进入待配货)sele ...
- Safari下默认10位数字为电话号码,点击拨号
<meta content="telephone=no" name="format-detection"/>
- 随着ScrollView的滑动,渐渐的执行动画View
今天是实现了一个小功能的东西.看看效果图: 实现方式: 1.自定义ScrollView 复写onScrollChange方法,来计算滑动的位置. 2.自定义接口,通过接口来在ScrollView中 ...
- DDD:两篇不错的文章
文章列表 Coding for Domain-Driven Design: Tips for Data-Focused Devs. Strengthening your domain: Aggrega ...
- 网络通信分享(二):外网ip和内网ip
一.内网ip包括两类: 1:tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/ ...
- [Python] Remote debugging by Pycharm
From: http://blog.csdn.net/u013088062/article/details/50170551 虚拟环境配置 配置远程解释器 设想这样一种情况,你在一个平台上操作你的工程 ...
- Win7以上 32/64位系统隐藏托盘图标
前两天有朋友找我,让帮忙写个小工具,隐藏windows的托盘图标,想想最近在家也不想做太复杂的事,也好几年没写过windows上的小工具了,就答应了.想来挺简单的事,没想到还是有点小插曲的.特地来博客 ...
- python面试题大全(二)
转载请注明出处http://www.cnblogs.com/goodhacker/p/3387027.html 1.python中类方法.类实例方法.静态方法有何区别? 区别: 类方法和静态方法都可以 ...
- 分享27款最佳的复古风格 WordPress 主题
WordPress 作为最流行的博客系统,插件众多,易于扩充功能.安装和使用都非常方便,而且有许多第三方开发的免费模板,安装方式简单易用. 复古风格可以应用于任何东西,从服装到室内设计,那么复古风格的 ...