美文网首页我爱编程
npm_自动化工作流_模块打包

npm_自动化工作流_模块打包

作者: Wensx | 来源:发表于2017-09-18 15:59 被阅读0次

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

npm install -g [name]

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

package.json记录了NPM包的所有相关信息,包括作者、简介、包依赖、构建等信息,格式是严格的JSON格式
其主要内容有:

  • name: 包名称
  • version:版本号
  • main:主文件入口
  • bin:果你的包里包含可执行文件,通过设置这个字段可以将它们包含到系统的PATH中,这样直接就可以运行,很方便。
  • description:包的描述
  • licence:包的开源协议
  • dependencies:包的依赖列表
  • devDependencies:包开发者使用的依赖列表
  • author:作者名称
  • repository:代码存放地址
  • scripts:scripts属性是一个对象,里边指定了项目的生命周期个各个环节需要执行的命令。key是生命周期中的事件,value是要执行的命令。

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

npm install -save app 是将app安装后放入当前包的依赖dependencies中, npm install --save-dev app是将app安装后放入开发者依赖中,他人使用时不会下载这些依赖。

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

先在包内node_modules查找若找不到就去上一级的目录查找,若还找不到继续向上查找,直到查找到根目录为止

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

  1. npm3与 npm2相比有什么改进?
    npm是node.js的包依赖管理工具,不过有时时侯项目依赖过多,造成路径过深,超过了操作系统的文件深度限制。NPM3对此做了很大改进。简单的来说将传统的嵌套结构改为了平铺结构 比如,有一个模块A,依赖 B. 1
    现在有个应用依赖A,运行 npm install
    npm3会将模块B放置到与A同级目录下 而npm2会将B放置到A的依赖模块目录下


    如果有另外一个模块C,它依赖了一个不同版本的依赖模块B
    在npm3中,不同版本的模块B会放置到C的依赖模块下
    在终端中看到的目录结构是这个样子的
  2. yarn和 npm 相比有什么优势

  • 速度快:yarn 缓存了每次你下载的模块,所以同样模块同样的版本不会发送第二次下载请求,对于没有缓存的模块, yarn 也可以通过并行的网络请求最大限度利用网络资源。
  • 安全:yarn 在开始安装一个包之前会先用 checksums 来验证,你不用担心本地的缓存的包被破坏了导致安装失败。
  • 清晰的输出:npm 默认情况下非常冗余,例如使用 npm install 时它会递归列出所有安装的信息;而 Yarn 则一点也不冗余,当可以使用其它命令时,它适当的使用 emojis 表情来减少信息(Windows 除外)。

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

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。

Gulp/Grunt是一种能够优化前端的开发流程的工具,而WebPack是一种模块化的解决方案,不过Webpack的优点使得Webpack在很多场景下可以替代Gulp/Grunt类的工具。
Grunt和Gulp的工作方式是:在一个配置文件中,指明对某些文件进行类似编译,组合,压缩等任务的具体步骤,工具之后可以自动替你完成这些任务。

Grunt和Gulp的工作流程

Grunt和Gulp的工作流程

Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。

Webpack工作方式

如果实在要把二者进行比较,Webpack的处理速度更快更直接,能打包更多不同类型的文件。

题目7: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 脚本。

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

github

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

Gulp就是为了规范前端开发流程,实现前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等功能的一个前端自动化构建工具。说的形象点,“Gulp就像是一个产品的流水线,整个产品从无到有,都要受流水线的控制,在流水线上我们可以对产品进行管理。”

var gulp = require('gulp')
var imagemin = require('gulp-imagemin')
var minifyCSS = require('gulp-minify-css')
var uglify = require('gulp-uglify')
var concat = require('gulp-concat')
var clean = require('gulp-clean')

gulp.task('images', function () {
  gulp.src('dist/img/*').pipe(clean())//清空文件夹
  return gulp.src('src/img/*.*') // 获取图片
      .pipe(imagemin({ // 压缩图片
        progressive: true
      }))
      .pipe(gulp.dest('dist/img')) //输出图片
})

gulp.task('css', function () {
  gulp.src('dist/css/*').pipe(clean())

  return gulp.src('src/css/*.css')
      .pipe(minifyCSS()) // 压缩css
      .pipe(concat('bundle.css')) // 合并css
      .pipe(gulp.dest('dist/css'))
})

gulp.task('js', function () {
  gulp.src('dist/js/*').pipe(clean())
  return gulp.src('src/js/*.js')
      .pipe(uglify()) // 压缩js
      .pipe(concat('main.js'))
      .pipe(gulp.dest('dist/js'))
})

gulp.task('default',['images','auto','js','css'])

相关文章

网友评论

    本文标题:npm_自动化工作流_模块打包

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