美文网首页
npm-npmscript-gulp-webpack

npm-npmscript-gulp-webpack

作者: 魔王卡卡 | 来源:发表于2017-12-11 10:22 被阅读0次

    题目1: 如何全局安装一个 node 应用?

    npm install -g <pkg>
    

    题目2: package.json 有什么作用?

    package.json 存储在项目的根目录下,内部保存了项目的相关信息(名称、版本等)以及该项目的依赖信息(生产环境依赖、开发环境依赖)

    {
      "name": "webpack-demo",  // 项目名称
      "version": "1.0.0",  // 项目版本
      "description": "",  // 项目描述
      "main": "index.js",  // 项目入口
      "keywords": [  // 项目关键字
          "xxx",
          "yyy"
      ],
      "scripts": {  // npm script 命令行
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",  // 项目作者
      "license": "ISC",  // 项目认证信息
      "dependencies": {  // 生产环境依赖,当安装该项目时,生产环境依赖也将同时安装
          "xxx": "^x.x.x"
      },
      "devDependencies": {  // 开发环境依赖,这些依赖仅在开发时有效
          "yyy": "^y.y.y"
      }
    }
    

    题目3: npm install --save app 与 npm install --save-dev app有什么区别?

    • --save 将产品运行时(或生产环境)需要的依赖模块添加到 package.jsondependencies 中,在发布后还需要继续使用,否则就运行不了。
    • --save-dev 将产品的开发环境需要的依赖模块添加到 package.jsondevDependencies 中,只在开发时才用到,发布后用不到它。

    题目4: node_modules的查找路径是怎样的?

    从项目所在目录开始查找 node_modules ,如果在当前目录找不到,向上进入父级目录查找,并以此类推,直到查找到所需文件或找到根目录下为止

    题目5: npm3与 npm2相比有什么改进?yarn和 npm 相比有什么优势? (选做题目)

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

    • npm2安装依赖的时候比较简单直接,直接按照包的依赖的树形结构下载填充至本地目录,缺陷在于太深的目录树结构会严重影响效率,甚至在window下可能会超出系统路径限制的长度,另外有删node_modules目录经历的可能都漫长的等待。
    • 针对 npm2 的问题,npm3 加了点算法,直白的解释就是:npm install 时会按照 package.json 里依赖的顺序依次解析,遇到新的包就把它放在第一级目录,后面如果遇到一级目录已经存在的包,会先判断版本,如果版本一样则忽略,否则会按照 npm2 的方式依次挂在依赖包目录下。
    • 在包版本差异化不太严重的情况下,这种构建方式会几乎把所有包放在一级目录下,很大程度下提升了效率以及节省了部分磁盘空间。

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

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

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

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

    题目7:npm script是什么?如何使用?

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

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

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

    demo

    代码

    题目9: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
    

    相关文章

      网友评论

          本文标题:npm-npmscript-gulp-webpack

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