npm-npmscript-gulp-webpack

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

npm install -global webpack

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

  • 每個項目的根目錄下面,一般都有一個package.json文件,定義了這個項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數據)。npm install命令根據這個配置文件,自動下載所需的模塊,也就是配置項目所需的運行和開發環境。

  • 下面是一個最簡單的package.json文件,只定義兩項元數據:項目名稱和項目版本。

{
  "name" : "xxx",
  "version" : "0.0.0",
}

package.json文件就是一個JSON對象,該對象的每一個成員就是當前項目的一項設置。比如name就是項目名稱,version是版本(遵守“大版本.次要版本.小版本”的格式)。

下面是一個更完整的package.json文件。

{
    "name": "Hello World",
    "version": "0.0.1",
    "author": "張三",
    "description": "第一個node.js程序",
    "keywords":["node.js","javascript"],
    "repository": {
        "type": "git",
        "url": "https://path/to/url"
    },
    "license":"MIT",
    "engines": {"node": "0.10.x"},
    "bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
    "contributors":[{"name":"李四","email":"lisi@example.com"}],
    "scripts": {
        "start": "node index.js"
    },
    "dependencies": {
        "express": "latest",
        "mongoose": "~3.8.3",
        "handlebars-runtime": "~1.0.12",
        "express3-handlebars": "~0.5.0",
        "MD5": "~1.2.0"
    },
    "devDependencies": {
        "bower": "~1.2.8",
        "grunt": "~0.4.1",
        "grunt-contrib-concat": "~0.3.0",
        "grunt-contrib-jshint": "~0.7.2",
        "grunt-contrib-uglify": "~0.2.7",
        "grunt-contrib-clean": "~0.5.0",
        "browserify": "2.36.1",
        "grunt-browserify": "~1.3.0",
    }
}

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

  • pm install 在安裝 npm 包時,有兩種方式把依賴包信息寫入 package.json 文件,一種是npm install --save,會把依賴包 dependencies,另一個是 npm install --save-dev,則寫進devDependencies
  • --save-dev 是你開發時候依賴的東西,--save 是你發布之后還依賴的東西

題目4: node_modules的查找路徑是怎樣的?
從當前目錄開始逐級向上查找node_modules

題目5: npm3與 npm2相比有什么改進?yarn和 npm 相比有什么優勢? (選做題目)
npm3在安裝模塊時就按字母序安裝在node_modules的第一級目錄

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

yarn是優化了的npm,速度更快。

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

  • WebPack可以看做是模塊打包機:它做的事情是,分析你的項目結構,找到JavaScript模塊以及其它的一些瀏覽器不能直接運行的拓展語言(Scss,TypeScript等),并將其打包為合適的格式以供瀏覽器使用。

  • WebPack和Grunt以及Gulp相比有什么特性

    • Grunt和Gulp的工作方式是:在一個配置文件中,指明對某些文件進行類似編譯,組合,壓縮等任務的具體步驟,這個工具之后可以自動替你完成這些任務。

    • Webpack的工作方式是:把你的項目當做一個整體,通過一個給定的主文件(如:index.js),Webpack將從這個文件開始找到你的項目的所有依賴文件,使用loaders處理它們,最后打包為一個瀏覽器可識別的JavaScript文件。

    • 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 腳本。它的優點很多。
項目的相關腳本,可以集中在一個地方。
不同項目的腳本命令,只要功能相同,就可以有同樣的對外接口。用戶不需要知道怎么測試你的項目,只要運行npm run test即可。
可以利用 npm 提供的很多輔助功能。
查看當前項目的所有 npm 腳本命令,可以使用不帶任何參數的npm run命令。

$ npm run

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

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

  • gulp是前端開發過程中對代碼進行構建的工具,是自動化項目的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成;使用她,我們不僅可以很愉快的編寫代碼,而且大大提高我們的工作效率
  • 壓縮
var gulp = require('gulp')                         //導入gulp
var cssnano = require('gulp-cssnano')              //導入css壓縮包             
var concat = require('gulp-concat')                //導入文件合并包
var jsmin = require('gulp-uglify')                 //導入JS壓縮包
var imgmin = require('gulp-imagemin')              //導入圖片壓縮包

gulp.task('build:img',function(){                  //圖片壓縮任務
    gulp.src('./images/*.jpg')
        .pipe(imgmin())
        .pipe(gulp.dest('./dist/img/'))
})


gulp.task('build:css',function(){                  //css合并壓縮任務
    gulp.src('./css/*.css')
        .pipe(concat('all.css'))
        .pipe(cssnano())
        .pipe(gulp.dest('./dist/css/'))
})

gulp.task('build:js',function(){                   //js合并壓縮任務
    gulp.src('./js/**/*.js')
        .pipe(concat('all.js')) 
        .pipe(jsmin())
        .pipe(gulp.dest('./dist/js/'))
})
gulp.task('default',['build:img','build:css','build:js'])

題目10: 開發一個 node 命令行天氣應用用于查詢用戶當前所在城市的天氣,發布到 npm 上去。可以通過如下方式安裝使用(可使用api.jirengu.com里提供的查詢天氣接口) (選做題目)

npm install hunger-weather -g
weather
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,695評論 2 370

推薦閱讀更多精彩內容