如果你从事前端开发,或者你的项目使用了某个前端框架,比如VUE,你一定见过package.json这个文件,我在想这个文件是什么时候添加进项目工程的?为什么需要这个文件,它有什么作用?
为了搞清楚这些问题,我开始查资料,然后呢,然后我发现自己对前端确实知道的很少。
为什么前端需要Node?
Vue.js官方教程上说:
安装教程给出了更多安装Vue的方式。请注意我们不推荐新手直接使用vue-cli,尤其是在你还不熟悉基于Node.js的构建工具时。
那么,基于Node.js的构建工具有哪些呢?比如Webpack、Babel、ESLint等。
为什么Node自带NPM?
《深入浅出Node.js》中第2章开头说:
首先,我想从模块为你娓娓道来Node。
JavaScript起初没有模块的概念,随着Web发展,社区开始为JavaScript制定相应规范,CommonJS规范是一个里程碑,它对模块的定义包括三个部分:模块引用、模块定义、模块标识。
如果说CommonJS是JavaScript模块方面的理论的话,Node就是模块的实现。但Node并非完全按照规范实现,而是对模块规范进行了一定的取舍。在Node中,模块分为两类:一类是Node提供的模块,称为核心模块;另一类是用户编写的模块,称为文件模块。
Node组织了自身的核心模块,也使得第三方文件模块可以有序地编写和使用。但是在第三方模块中,模块与模块之间仍然是散列在各地的,相互之间不能直接引用。而在模块之外,包和NPM则是将模块联系起来的一种机制。
管理你的包
我们上面引出了包和NPM,可以说一个Node.js项目就是一个包,而NPM是用来管理项目的,为什么要管理项目呢?因为一个软件产品并不是发布后(比如1.0)就算完成了,后期还要长期维护,包括修复bug、添加新功能、对第三方模块进行升级等。
package.json就是包的描述文件,位于包的根目录下,而NPM的所有行为都与包描述文件的字段息息相关。NPM官方文档上说:
You can add a package.json file to your package to make it easy for others to manage and install. Packages published to the registry must contain a package.json file.
所以,一般我们在开始一个Node.js项目时,就会创建一个package.json文件,创建的方法很简单:
npm init
下面举一个例子,说明package.json的作用,比如我从Github上Clone or download下来一个项目,像这样:
没有node_modules,只需要执行下面的命令就可以安装所有依赖的包:
npm install