如何全局安装/卸载一个 node 应用?
当前目录下安装/卸载:
npm install xxx / npm unistall xxx
全局下安装/卸载:
npm install -g xxx / npm unistall -g xxx
package.json 有什么作用?
package.json定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
通过scripts指定运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。
通过dependencies字段指定项目运行所依赖的模块,通过devDependencies指定项目开发所需要的模块。
bin项用来指定各个内部命令对应的可执行文件的位置。
main字段指定了加载的入口文件,require('moduleName')就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。
config字段用于添加命令行的环境变量。
npm install --save app 与 npm install --save-dev app有什么区别?
npm install --save app:将在当前目录导入app模块,并写入'dependencies'字段,当其他人下载代码并运行npm install时会自动下载app模块。
npm install --save-dev app:将在当前目录导入app模块,并写入'devDependencies'字段,当其他人下载代码并运行npm install时不会自动下载app模块。
node_modules的查找路径是怎样的?
从当前文件目录开始查找node_modules目录;然后依次进入父目录,查找父目录下的node_modules目录;依次迭代,直到根目录下的node_modules目录。
npm3与 npm2相比有什么改进?yarn和 npm 相比有什么优势?
针对 npm2 的问题,npm3 加了点算法,直白的解释就是:npm install 时会按照 package.json 里依赖的顺序依次解析,遇到新的包就把它放在第一级目录,后面如果遇到一级目录已经存在的包,会先判断版本,如果版本一样则忽略,否则会按照 npm2 的方式依次挂在依赖包目录下。
在包版本差异化不太严重的情况下,这种构建方式会几乎把所有包放在一级目录下,很大程度上提升了效率以及节省了部分磁盘空间。
Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 — Yarn,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的:
- 为了防止拉取到不同的版本,Yarn 有一个锁定文件 (lock file) 记录了被确切安装上的模块的版本号。
- Yarn 是同步执行所有任务,提高了性能。
- 更简洁的输出
webpack是什么?和其他同类型工具比有什么优势?
webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成少量的 bundle - 通常只有一个,由浏览器加载。
优势:
- webpack 是以 commonJS 的形式来书写脚本滴,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。
- 所有静态资源都可以被当成模块引用,而不仅仅是JS了。
- 开发便捷,能替代部分 grunt/gulp 的工作,比如打包、压缩混淆、图片转base64等。
- 模块来源广泛,支持包括npm/bower等等的各种主流模块安装/依赖解决方案。
npm script是什么?如何使用?
npm 允许在package.json文件里面,使用scripts字段定义脚本命令。
{
// ...
"scripts": {
"build": "node build.js"
}
}
上面代码是package.json文件的一个片段,里面的scripts字段是一个对象。它的每一个属性,对应一段脚本。比如,build命令对应的脚本是node build.js。
命令行下使用npm run命令,就可以执行这段脚本。
$ npm run build
等同于执行
$ node build.js
这些定义在package.json里面的脚本,称为 npm 脚本。
优点:
- 项目的相关脚本,可以集中在一个地方。
- 不同项目的脚本命令,只要功能相同,就可以有同样的对外接口。用户不需要知道怎么测试你的项目,只要运行npm run test即可。
- 可以利用 npm 提供的很多辅助功能。
查看当前项目的所有 npm 脚本命令,可以使用不带任何参数的npm run命令。
使用 webpack 替换 入门-任务15中模块化使用的 requriejs
gulp是什么?使用 gulp 实现图片压缩、CSS 压缩合并、JS 压缩合并
gulp简介:
- 它是一款nodejs应用。
- 它是打造前端工作流的利器,打包、压缩、合并、git、远程操作...,
- 简单易用
- 高质量的插件
网友评论