美文网首页
高级任务5-npm-npmscript-gulp-webpack

高级任务5-npm-npmscript-gulp-webpack

作者: RookieD | 来源:发表于2018-01-13 21:13 被阅读0次

如何全局安装一个 node 应用?

  • npm install -g app-name

package.json有什么作用?

  • package.json存储在项目的根目录下,保存链项目的名称、版本、描述、关键字、作者等相关信息以及该项目的依赖信息(运行依赖环境、开发依赖环境)
{
  "name": "demo1",      //项目名称
  "version": "1.0.1",   //项目版本
  "description": " ",   //项目描述
  "main": "index.js",   //项目入口
  "scripts": {          //npm script 命令行
    "test":  "echo\"Eorr: no test specified\" && exit 1"
  }
  "bin": {              //项目执行文件的位置
    "demo1": "./index.js"
  }
  "keyword": [          //项目关键字
    "demo1"
  ],  
  "author": "xxx",      //项目作者
  "license": "ISC",     //项目认证信息
  "dependencies": {     //项目运行依赖环境,当安装该项目时,运行依赖环境也会安装
    "marked": "^0.3.6"
  },
  "devDependencies": {  //项目开发依赖环境,只在本地测试有效,安装该项目时,开发依赖环境不会安装
    "easytpl": "^1.0.4"
  }
}

npm install --save app 与 npm install --save-dev app有什么区别?

  • npm install --save app将项目运行时需要的依赖环境下载到package.json的dependencies中,项目发布之后还要继续使用。
  • npm install --save-dev app将项目的开发依赖环境下载到package.json的devDependencies中,在本地测试的时候使用,项目发布之后不会使用。

node_modules的查找路径是怎样的?

  • 查找依赖的路线是:先从本地目录下寻找,不存在就依次向上级目录中查询,直到系统根目录。node全局安装在系统根目录下,所以全局安装后可在所有目录下使用。

npm3与 npm2相比有什么改进?yarn和 npm 相比有什么优势?

npm3相比npm2主要改进了依赖管理方案

  • npm2安装依赖的时候比较简单直接,直接按照包的依赖的树形结构下载填充至本地目录,缺陷在于太深的目录树结构会严重影响效率,甚至在window下可能会超出系统路径限制的长度,另外有删node_modules目录经历的可能都漫长的等待。

  • 针对 npm2 的问题,npm3 加了点算法,直白的解释就是:npm install 时会按照 package.json 里依赖的顺序依次解析,遇到新的包就把它放在第一级目录,后面如果遇到一级目录已经存在的包,会先判断版本,如果版本一样则忽略,否则会按照 npm2 的方式依次挂在依赖包目录下。
    在包版本差异化不太严重的情况下,这种构建方式会几乎把所有包放在一级目录下,很大程度下提升了效率以及节省了部分磁盘空间。

  • yarn优点在于只要通过Yarn安装过的套件都会在本地目录产生Cache,也就是说只要安装过一次,下次重新安装都会从Cache重新读取, 安装速度会提升很多。

webpack是什么?和其他同类型工具比有什么优势?

  • webpack是一款模块加载器兼打包工具,它能把各种资源JS/CSS/图片等都作为模块来使用和处理。

优势如下:

  • webpack 是以 commonJS 的形式来书写脚本,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。
    webpack可以将代码拆分成多个区块,每个区块包含一个或多个模块,它们可以按需异步加载,极大地减少了页面初次加载时间。
  • webpack 本身只能处理原生的 JS 模块,但是 loader 转换器可以将各种类型的资源转换成 JS 模块。这样,任何资源都可以成为 webpack 可以处理的模块。
  • webpack 有一个智能解析器,几乎可以处理任何第三方库,无论它们的模块形式是 CommonJS、 AMD 还是普通的 JS 文件。
  • webpack 还有一个功能丰富的插件系统。大多数内容功能都是基于这个插件系统运行的,还可以开发和使用开源的 -
  • webpack 插件,来满足各式各样的需求。
  • webpack使用异步 I/O 和多级缓存提高运行效率,使得它能够快速增量编译。

npm script是什么?如何使用?

npm script 是供 npm 使用的脚本命令,储存于package.json 内的 scripts 字段内

要使用 npm script ,只需执行命令npm run <command>即可,部分 npm 内置的关键字(如 start 、 test 等)可以省略 run

使用 webpack 替换 入门-任务15中模块化使用的 requriejs

代码地址

gulp是什么?使用 gulp 实现图片压缩、CSS 压缩合并、JS 压缩合并

  • gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器
  • 不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成。
  • gulp是基于Nodejs的自动任务运行器, 能自动化地完成javascript/coffee/sass/less/html/image/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

相关文章

  • 高级任务5-npm-npmscript-gulp-webpack

    如何全局安装一个 node 应用? npm install -g app-name package.json有什么...

  • 高级-任务2

    this 相关问题 问题1: apply、call 、bind有什么作用,什么区别 apply和call的第一个参...

  • 高级-任务4

    题目1: 为什么要使用模块化? 模块的由来:嵌入网页的JS代码越来越庞大,越来越像桌面程序,需要一个团队去分工协作...

  • 高级-任务5

    题目1: 如何全局安装一个 node 应用? npm install -g 题目2: package.json 有...

  • 高级-任务3

    封装一个轮播组件 封装一个曝光加载组件 封装一个 Tab 组件 封装一个 Modal 组件

  • 高级-任务1

    问题1: OOP 指什么?有哪些特性 OOP: Object Oriented programming面向对象编程...

  • 高级 - 任务5

    课程任务 题目1: 如何全局安装一个 node 应用? 在命令行使用npm install -g xxx即可以全局...

  • 高级任务2

    1、apply、call 、bind有什么作用,什么区别? apply语法--->fun.apply(thisAr...

  • 高级任务3

    1、封装一个轮播组件 预览 代码github 2、封装一个曝光加载组件 预览 代码github 3、封装一个 Ta...

  • 高级任务1

    1、OOP 指什么?有哪些特性 oop--->是object oriented programming的缩写,它是...

网友评论

      本文标题:高级任务5-npm-npmscript-gulp-webpack

      本文链接:https://www.haomeiwen.com/subject/nntenxtx.html