npm-npmscript-gulp-webpack

題目1: 如何全局安裝一個 node 應用?

npm install -g package_name
or
npm install package_name -g

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

//package.json

{
  "name": "plearner-demo0",
  "version": "1.0.0",
  "description": "this is a desrtiption of my test",
  "main": "text.js",
  "scripts": {
    "test": "echo peng"
  },
  "keywords": [
    "test"
  ],
  "author": "plearner",
  "license": "ISC",
  "dependencies": {
    "marked": "^0.3.6"
  },
  "devDependencies": {
    "easytpl": "^1.0.4"
  }
}
上述代碼就是package.json的一個簡易文件
name: 該node_module的名字
version: 向npm發(fā)布時,該node_module的版本號
descriptiion: 對該模塊的描述
main: require該模塊時,該模塊從此文件開始執(zhí)行,也就是程序的入口文件
scripts: 這是一個對象,對象的鍵表示指令,值表示要執(zhí)行的代碼,當指令
為test何start時,可直接用npm test或npm test執(zhí)行,當指令為其他的非系
統(tǒng)預設值時,必須要用npm run command_name才可以執(zhí)行。
keywords: 在npm網(wǎng)站搜索時,通過搜索該關鍵字,可以找到該模塊
author: 該模塊的作者
dependencies : 該模塊運行時需要依賴的其他模塊,當其他人npm install該模塊時,也會把該模塊的依賴模塊一并安裝
devDependencies: 編寫該模塊時,采用的開發(fā)工具,非必須,當其他人npm install該模塊時,不會安裝此開發(fā)依賴工具

題目3: npm install --save app 與 npm install --save-dev app有什么區(qū)別?

npm install --save app會在package.json文件中的dependencies中,記錄此依賴模塊的名字及其版本號,當別人安裝我開發(fā)的模塊時,也會一并把我開發(fā)時所依賴的模塊進行下載和安裝.
npm install --save-dev app會在package.json文件中的devDependencies中,記錄此開發(fā)依賴工具,及其版本號,當別人安裝我開發(fā)的模塊時,并不會下載安裝此開發(fā)依賴工具。

題目4: nodule_modules的查找路徑是怎樣的?

  1. 當require('模塊id')不是node的核心模塊
    路徑也不為(. , ./, ../ , /)開頭
    就會遞歸的往上層目錄中的node_modules文件夾下尋找模塊
    直到查完所有module.paths數(shù)組,還找不到,就報錯

  2. 是核心模塊,就直接找核心模塊

  3. 路徑以(. , ./, ../ , /)開頭,就按路徑查找

題目5: npm3與 npm2相比有什么改進?yarn和 npm 相比有什么優(yōu)勢? (選做題目)

npm3在安裝模塊時就按字母序安裝在node_modules的第一級目錄

當后續(xù)包有重復依賴時就不需要重新安裝

yarn是優(yōu)化了的npm,速度更快

題目6: webpack是什么?和其他同類型工具比有什么優(yōu)勢?

Webpack 是當下最熱門的前端資源模塊化管理和打包工具。它可以將許多松散的模塊按照依賴和規(guī)則打包成符合生產(chǎn)環(huán)境部署的前端資源。還可以將按需加載的模塊進行代碼分隔,等到實際需要的時候再異步加載。通過 loader 的轉(zhuǎn)換,任何形式的資源都可以視作模塊,比如 CommonJs 模塊、 AMD 模塊、 ES6 模塊、CSS、圖片、 JSON、Coffeescript、 LESS 等。
優(yōu)勢:

對 CommonJS 、 AMD 、ES6的語法做了兼容
對js、css、圖片等資源文件都支持打包
串聯(lián)式模塊加載器以及插件機制,讓其具有更好的靈活性和擴展性,例如提供對CoffeeScript、ES6的支持
有獨立的配置文件webpack.config.js
可以將代碼切割成不同的chunk,實現(xiàn)按需加載,降低了初始化時間
支持 SourceUrls 和 SourceMaps,易于調(diào)試
具有強大的Plugin接口,大多是內(nèi)部插件,使用起來比較靈活
webpack 使用異步 IO 并具有多級緩存。這使得 webpack 很快且在增量編譯上更加快

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

npm script允許在package.json中使用scripts字段定義腳本命令。

{
  //...
  "scripts": {
       "run": "echo 11111"
  }
}

執(zhí)行npm run命令就等同于執(zhí)行echo 11111命令。

題目8: 使用 webpack 替換 入門-任務15中模塊化使用的 requriejs

效果預覽
代碼預覽

題目9:gulp是什么?使用 gulp 實現(xiàn)圖片壓縮、CSS 壓縮合并、JS 壓縮合并



1. 安裝壓縮插件
安裝圖像壓縮插件
npm install gulp-imagemin --save-dev
安裝文件合并插件
npm install gulp-concat --save-dev
安裝css壓縮插件
npm install gulp-cssnano --save-dev
安裝js規(guī)范檢查插件
npm install jshint gulp-jshint --save-dev
安裝js壓縮插件
npm install uglify --save-dev

創(chuàng)建gulpfile.js文件
//gulpfile.js
2. 載入插件
var gulp = require('gulp');
var cssnano = require('gulp-cssnano');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify'); // js壓縮
var imagemin = require('gulp-imagemin'); // image壓縮
var jshint = require('gulp-jshint'); // js代碼規(guī)范性檢查

3. 定義任務
定義css合并壓縮任務
gulp.task('build:css', function() {
    gulp.src('./src/css/*.css')
        .pipe(concat('index-merge.css'))
        .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(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']);
4. 執(zhí)行任務
在命令行中執(zhí)行命令:
gulp build
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容