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

npm&npmscript&gulp&webpack

作者: D一梦三四年 | 来源:发表于2017-11-06 12:02 被阅读0次

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

npm install -g nodenamenpm install -global nodename

2. package.json 有什么作用?

{
  "name": "test",  //这个模块的名字
  "version": "1.0.0",  //向npm发布时,该模块的版本号,每次修改必须升级版本号
  "description": "测试",  //这个模块功能的描述
  "main": "index.js",  //// require该模块时,该模块从此文件开始执行,也就是程序的入口文件
  "bin": {  // /usr/local/bin 目录下有一个test的文件,它的内容是在/usr/local/lib/node_modules中对应的模块中的index.js。此模块能在全局环境下运行,只要命令行工具内输入test就能执行相应的index.js的内容
    "test": "./index.js" //
  },
  "scripts": {  //这是一个对象,对象的键表示指令,值表示要在命令行中执行的代码,当指令为test和start时,可直接用npm test执行,当指令为其他的非系统预设值时,必须要用npm run command_name才可以执行。
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [  //在npm网站搜索时,通过搜索该关键字,可以找到该模块
    "test"
  ],
  "author": "zhou",  //这个模块的作者
  "license": "ISC",  //这个模块的许可证类型
  "dependencies": {
    "axios": "^0.16.1"  //该模块运行时需要依赖的其他模块,当其他人npm install该模块时,也会把该模块的依赖模块一并安装
  },
  "devDependencies": {  ////该模块的开发调试时使用的依赖,当其他人npm install该模块时,不会下载这些依赖
    "gulp": "^3.9.1",
    "gulp-concat": "^2.6.1",
    "gulp-cssnano": "^2.1.2"
  }
}

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

  • npm install --save app 会在 package.json文件中的 dependencies 中,记录此依赖模块的名字及其版本号,当别人安装我开发的模块时,也会一并把我开发时所依赖的模块进行下载和安装.
  • npm install --save-dev app 会在 package.json 文件中的devDependencies 中,记录此开发依赖工具,及其版本号,当别人安装我开发的模块时,并不会下载安装此开发依赖工具。

4. node_modules的查找路径是怎样的?

先从当前路径找,如果找到了 node_modules,就读取 package.json 里
main 指向的入口文件,并加载这个文件。如果在当前目录下没找到
node_modules,就一直往上找,到家目录,再到根目录,还找不到就报错。

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

  • npm3 在安装模块时就按字母序安装在 node_modules 的第一级目录,当后续包有重复依赖时就不需要重新安装
  • yarn 是优化了的 npm,速度更快

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

  • WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。主要包含四个核心概念:入口(entry)、输出(output)、loader、插件(plugins)。
  • 优势
    • 在webpack看来一切都是模块!这就是它不可不说的优点,包括你的JavaScript代码,也包括CSS和fonts以及图片等等等,只有通过合适的loaders,它们都可以被当做模块被处理。
    • Webpack 本身只能处理原生的 JavaScript 模块,但是 loader 转换器可以将各种类型的资源转换成 JavaScript 模块。这样,任何资源都可以成为 Webpack 可以处理的模块。
    • 丰富的插件系统。大多数内容功能都是基于这个插件系统运行的,还可以开发和使用开源的 Webpack 插件,来满足各式各样的需求。
    • 和 requirejs 相比,require.js的所有功能它都有,但编绎过程更快,因为 require.js 会去处理不需要的文件,还有一个额外的好处就是你不需要再做一个封装的函数,不需要写 define,自己用 exports 后,require 就好。

7. npm script是什么?如何使用?

  • npm script 允许在 package.json 中使用 scripts 字段定义脚本命令。通过设置 npm script 可以方便实现前端工作流。如此例,在命令行输入 npm run webpack,就可以在命令行中执行 webpack app.js ./bin/app.merge.js 命令。
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "webpack": "webpack app.js ./bin/app.merge.js"
}

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

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

  • gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务如使用 gulp 实现图片压缩、CSS 压缩合并、JS 压缩合并等。
1. 安装项目的开发依赖(devDependencies)安装
$ npm install --save-dev gulp
2.  在项目根目录下创建一个名为 gulpfile.js 的文件
3. 安装需要使用的插件
npm install gulp-imagemin --save-dev
npm install gulp-cssnano --save-dev
npm install --save-dev gulp-uglify
npm install gulp-concat --save-dev
4. 载入插件
const gulp = require('gulp');
const imagemin = require('gulp-imagemin');
const cssnano = require('gulp-cssnano');
const uglify = require('gulp-uglify');
const concat = require('gulp-concat');
5. 定义任务
//合并压缩css
gulp.task('build:css', function () {
    gulp.src('src/css/*.css')
        .pipe(concat('merge.min.css'))
        .pipe(cssnano())
        .pipe(gulp.dest('./css/'));
});

//合并压缩js
gulp.task('build:js', function () {
    gulp.src('src/js/*.js')
        .pipe(concat('merge.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('./js/'));
});

//压缩img
gulp.task('build:img', function () {
    gulp.src('src/img/*')
        .pipe(imagemin())
        .pipe(gulp.dest('./img/'))
});

//合并任务
gulp.task('build', ['build:css', 'build:js', 'build:img']);
6. 运行 gulp build

相关文章

网友评论

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

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