高级5

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

npm install -g xxx表示全局安装一个node包。

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

相当于本地包(项目)的一个文档说明。
其中最重要的几个属性分别是
main // 规定文件的入口。
dependencies ...// 上传时,告诉npm,这个文件使用过程所用到的包,别人下载你所创建的包时,npm就会自动安装所依赖的包。
dev dependencies ..// 开发所依赖的包,别人使用时不会下载这个包。
script // 可以简单的制定前端工作流,便于使用,而且兼容性好。

npm install ,当package.json中的dependecies 或这 dev dependencies 改变时,使用这个命令就会自动下载所依赖的包。

{
        "name": "my_package",     //你的项目名称,全部小写,不能有空格,一个单词,允许-和_. 如果是要发布自己的node插件,一般用github上面项目名称。 下次有机会说明 npm 上面的发布流程。

        "version": "1.0.0",  //你的项目版本号,最好遵守 GNU 版本号管理。 

        "main": "index.js", //目录中启动文件名称。或者称之为入口文件,一般都是 index.js

        "scripts": {

            "test": "echo \"Error: no test specified\" && exit 1"    //一般默认一个test的空文件夹、用作写测试代码。

        },

        "keywords": [],  //项目的关键词。 一般用不到,发布npm才用得到。

        "author": "ag_dubs", //作者名称

        "license": "ISC", //协议 

        "repository": {  // 用来存放到 版本管理远程服务。 发布npm才有用

            "type": "git",

            "url": "https://github.com/ashleygwilliams/my_package.git"

        },

        "dependencies": {   // 正式使用时,依赖的包

            "my_dep": "^1.0.0"

        },

        "devDependencies" : {//开发或者测试时,依赖的包。

            "my_test_framework": "^3.1.0"

        }

        "bugs": {  //同repository

            "url": "https://github.com/ashleygwilliams/my_package/issues"

        },

        "homepage": "https://github.com/ashleygwilliams/my_package"  //项目主页、 发布才有用

    }

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

  • npm install --save app 和npm install --save-dev app 两个都是当前文件夹安装app包,并且都是这个包所依赖的其他包, 但是,--save 执行时,会自动更新 packge.json中的dependencies 。而 --save-dev 会更新 dev dependencies, 开发依赖包。当我们发布包成功,别人下载时,会自动下载 dependencies。而开发依赖的包,不会被用户下载。

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

当我们在 入口文件 require一个包时,首先 会在当前的nodeule-modules下查找,如果没有这个文件或者没有这个包,就向上级目录查找,直到查询到根目录。

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

webpack是一个模块打包器。

  1. webpack的核心是 一切皆模块的思想,所以,任何模块,CSS,图片,字体,都被webpack当做模块来处理,我们只需要在需要这些模块的时候来require,这样,开发的时候,逻辑就很清晰。开发人员不由自主的就可以让文件分割的彻底,变成一个个的块。只要配置好webpack,就可以实现按需要来加载这些块。
  2. 独有的loader机制,我们可以用loader来处理目前浏览器不兼容的less,ES6啊,然后,webpack自己来处理这些事情,把浏览器看不懂的变成看的懂的,开发人员只需要关注功能实现就可以了。

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

npm script 是利用packge.json中 script 这个属性,制定一个工作流。
比如 ''test'':''mkdir abc'',我们就可以直接使用npm test在当前文件夹创建一个 mkdir abc;
(但是除了 test和start,设置的其他命令均需要 用npm run xxx来启用),对此,我们可以在命令行的使用上就可以简化很多。不用来敲很多代码,来执行一个命令,而是敲少量的代码,来执行一系列的事情。

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

github: https://github.com/sys521/task5

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

var gulp= require('gulp')
var gulpconcat=require('gulp-concat')
var gulpimagemin=require('gulp-imagemin')
var gulpuglify= require('gulp-uglify')
var cleanCss=require('gulp-clean-css')

gulp.task('js',function(){                      //js合并,压缩
    return gulp.src('./src/js/*.js')
        .pipe(gulpconcat('index.js'))
        .pipe(gulpuglify())
        .pipe(gulp.dest('./dist/js'))
})
gulp.task('imgs',function(){                   //图片压缩
    return gulp.src('./src/imgs/*')
        .pipe(gulpimagemin())
        .pipe(gulp.dest('./dist/imgs/'))
})

gulp.task('css',function(){
    return gulp.src('./src/css/*.css')        //css合并压缩
        .pipe(gulpconcat('merge.css'))
        .pipe(cleanCss({compatibility:'ie8'}))
        .pipe(gulp.dest('./dist/css'))
})

gulp.task('build',['js','css','imgs'])

# 题目10:npm制作一个天气预报的包

npm install npmweather -g
weather
weather 杭州

但是今天好像不行

![接口好像不稳定](http://upload-images.jianshu.io/upload_images/6127894-7bb9cc86ca9fb392.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

推荐阅读更多精彩内容