“name”: “kocla_test”,
“version”: “1.0.0”,
}
2. scripts
指定了运行脚本命令的`npm`命令行缩写,比如start指定了运行`npm run start`时,所要执行的命令。
下面的设置指定了`npm run dev、npm run bulid、npm run unit、npm run test、npm run lint`时,所要执行的命令。
“scripts”: {
“dev”: “node build/dev-server.js”,
“build”: “node build/build.js”,
“unit”: “cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run”,
“test”: “npm run unit”,
“lint”: “eslint --ext .js,.vue src test/unit/specs”
},
3. `dependencies,devDependencies`
`dependencies`和`devDependencies`两项,分别指定了项目运行、开发所需要的模块。它们都指向一个对象,该对象的各个成员,分别由模块名和对应的版本要去组成,表示依赖的模块及其版本范围
>
> * `--save`参数表示将该模块写入`dependencies`属性,
> * `--save-dev`表示将该模块写入`devDependencies`属性。
>
>
>
“dependencies”: {
“vue”: “^2.2.2”,
“vue-router”: “^2.2.0”
},
“devDependencies”: {
“autoprefixer”: “^6.7.2”,
“babel-core”: “^6.22.1”,
“babel-eslint”: “^7.1.1”,
“babel-loader”: “^6.2.10”,
“babel-plugin-transform-runtime”: “^6.22.0”,
“babel-preset-env”: “^1.2.1”,
“babel-preset-stage-2”: “^6.22.0”,
“babel-register”: “^6.22.0”,
“chalk”: “^1.1.3”,
}
注:
* `devDependencies`下的依赖包,只是我们在本地或开发坏境下运行代码所依赖的,若发布到线上,其实就不需要`devDependencies`下的所有依赖包;(比如各种`loader`,`babel`全家桶及各种`webpack`的插件等)只用于开发环境,不用于生产环境,因此不需要打包;
* `dependencies`是我们线上(生产坏境)下所要依赖的包,比如vue,我们线上时必须要使用的,所以要放在`dependencies`下;`dependencies`依赖的包不仅开发环境能使用,生产环境也能使用。
* 所谓开发环境,就是指开发阶段,比如`webpack`,`gulp`这些工具,都只是在开发阶段需要,一旦项目真正投入使用,便不再依赖这些插件,所以将其安装在`devDependencies`即可;
* 生产环境,则表示项目真正投入使用时,此时仍然需要依赖的插件则需要安装在`dependencies`中,比如`vue`,`vue-router`,`jQuery`这些,`dependencies`中没有这些插件,项目真实使用时就会出错。
4. `config`字段
`config`字段用于向环境变量输出值。
{
“name” : “foo”,
“config” : { “port” : “8080” },
“scripts” : { “start” : “node server.js” }
}
5. `engines` 字段
指明了该项目所需要的`node.js`版本。
“engines”: {
“node”: “>= 4.0.0”,
“npm”: “>= 3.0.0”
},
6. `bin`
许多包有一个或多个可执行文件希望被安装到系统路径。在`npm`下要这么做非常容易(事实上,`npm`就是这么运行的)。
这需要在`package.json`中提供一个`bin`字段,它是一个命令名和本地文件名的映射。在安装时,如果是全局安装,`npm`将会使用符号链接把这些文件链接到`prefix/bin`,如果是本地安装,会链接到`./node_modules/.bin/`。
比如,要使用myapp作为命令时可以这么做:
#### 后话
-------------------------------------------------------------
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**
对于面试,说几句个人观点。
面试,说到底是一种考试。正如我们一直批判应试教育脱离教育的本质,为了面试学习技术也脱离了技术的初心。但考试对于人才选拔的有效性是毋庸置疑的,几千年来一直如此。除非你有实力向公司证明你足够优秀,否则,还是得乖乖准备面试。这也并不妨碍你在通过面试之后按自己的方式学习。
其实在面试准备阶段,个人的收获是很大的,我也认为这是一种不错的学习方式。首先,面试问题大部分基础而且深入,这些是平时工作的基础。就好像我们之前一直不明白学习语文的意义,但它的意义就在每天的谈话间。
所谓面试造火箭,工作拧螺丝。面试往往有更高的要求,也迫使我们更专心更深入地去学习一些知识,也何尝不是一种好事。