npm install -g <package_name>
上述命令执行之后将会在当前的目录下创建一个 node_modules 的目录(如果不存在的话),然后将下载的包保存到这个目录下。
package.json
存储在项目的根目录下,内部保存了项目的相关信息(名称、版本等)以及该项目的依赖信息(生产环境依赖、开发环境依赖)。
package.json必须是纯JSON的,而不仅仅是一个JavaScript对象字面量。
package.json 中添加中文注释会编译出错。
每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
package.json文件可以手工编写,也可以使用npm init命令自动生成(注意:npm init 时,用户需回答一些问题,然后在当前目录生成一个基本的package.json文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的)。
{
"name": "test-demo0", //项目名称,发布项目后,可以通过该名称在npm上搜索到该项目,必须全网唯一
"version": "1.0.0", //版本号,当项目做了改动时需要修改版本号再发布
"description": "", //项目描述。
"main": "index.js", //项目入口文件
"scripts": {
"test": "echo "Error: no test specified" && exit 1" //npm script 命令行,自定义的npm脚本,npm 内置了两个简写的命令:npm test 和 npm start,其它命令要写成 npm run xxx 形式,这个对象中的键值对键名代表npm脚本的命令,而值则代表实际执行的命令。
},
"keywords": [
"demo0" //项目描述关键词
],
"author": "xxx", //项目作者
"license": "ISC", //项目遵循的开源协议
"dependencies": {
"marked": "^0.3.6" //项目所依赖的包,当在执行npm install命令时,将会根据此对象中的属性来安装依赖。
},
"devDependencies": {
"easytpl": "^1.0.4" //项目构建者构建项目所依赖的包,这个对象中的依赖仅仅在构建项目时安装
}
}
npm install --save app
: 将产品运行时(或生产环境)需要的依赖模块添加到 package.json
的 dependencies
中,在发布后还需要继续使用,否则就运行不了npm install --save-dev app
:将产品的开发环境需要的依赖模块添加到
package.json
的 devDependencies
中,只在开发时才用到,发布后用不到它。区别在于:当你把项目发布上线后,别人使用 npm install
使用你的项目时,并不会下载devDependencies里的模块。
从当前文件目录开始查找node_modules目录,如果没有,则进入父级目录,查找父级目录下的node_modules目录;直到根目录下的node_modules目录。
比如当前脚本文件/demo/src/foo.js,在该模块中使用require('bar')方式加载模块时,node内部运行过程如下:
/demo/src/node_modules/bar /demo/node_modules/bar /node_modules/bar
yarn优点在于只要通过Yarn安装过的套件都会在本地目录产生Cache,也就是说只要安装过一次,下次重新安装都会从Cache重新读取, 安装速度会提升很多。
webpack是一款模块加载器兼打包工具,它能把各种资源JS/CSS/图片等都作为模块来使用和处理。优势如下:
//安装插件
npm install gulp-imagemin --save-dev //图片压缩
npm install gulp-cssnano --save-dev //css压缩
npm install uglify --save-dev //js压缩
npm install gulp-jshint --save-dev //js规范检查
npm install gulp-concat --save-dev //文件合并
npm install gulp-rename --save-dev //重命名
//gulpfile.js
//引入插件
var gulp = require('gulp'),
cssnano = require('gulp-cssnano'),
concat = require('gulp-concat'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
imagemin = require('gulp-imagemin'),
rename = require('gulp-rename'),
//css合并压缩
gulp.task('build:css', function() {
gulp.src('./src/css/*.css')
.pipe(concat('merge.css'))
.pipe(rename({
suffix: '.min'
}))
.pipe(cssnano())
.pipe(gulp.dest('dist/css/'));
})
//js合并压缩
gulp.task('build:js', function() {
gulp.src('src/js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(concat('merge.js'))
.pipe(rename({
suffix: '.min'
}))
.pipe(uglify())
.pipe(gulp.dest('dist/js/'));
})
//图片压缩
gulp.task('build:image', function() {
gulp.src('src/imgs/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/imgs/'));
})
gulp.task('build', ['build:css', 'build:js', 'build:image']);
//命令行
gulp build