npm的使用 02

如何全局安裝一個 node 應用?

npm install -g module_name

package.json有什么作用

當我們使用 npm init 命令來創(chuàng)建一個新的項目(模塊)時,會生成package.json用來對該項目進行相關描述,其中包含了項目名稱,版本號,項目描述,作者等信息,其中比較重要的是bin和script,在我的博客里對這兩部分進行了詳細介紹-->http://www.reibang.com/p/3fe33187d4c6

npm install --savenpm install --save-dev有什么區(qū)別?

npm install module_name --save可以自動把模塊和版本號添加到package.json的dependencies部分,npm install module_name --save-dev可以把模塊和版本號添加到package.json的devdependencies部分.兩者的區(qū)別在于,位于dependencies的模塊是當前項目必須依賴的模塊,而位于devdependencies的模塊是項目開發(fā)過程中需要的模塊以及測試模塊(例如gulp及其相關插件),不是當前項目必須依賴的模塊.

node_modules的查找路徑是怎樣的?

先從當前目錄下查找,如果不存在,就一次向上級目錄中查找,直到系統(tǒng)根目錄.

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 很快且在增量編譯上更加快

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

https://github.com/yan358941877/learning-records/tree/master/09-webpack/demo02

gulp是什么?使用 gulp 實現(xiàn)圖片壓縮氨距、CSS 壓縮合并、JS 壓縮合并

  • gulp是一個自動化構(gòu)建工具,開發(fā)者可以使用它在項目開發(fā)過程中自動執(zhí)行常見任務
  • 使用 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
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
{
    "name": "demo01",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "webpack": "webpack app.js app.merge.js"
    },
    "author": "",
    "license": "ISC",
    "devDependencies": {
        "webpack": "^2.3.2"
    }
}

scripts中的`"webpack": "webpack app.js app.merge.js"',當運行npm run webpack時,會優(yōu)先從 ./node_modules/.bin/目錄中去找webpack文件(該文件是和./node_modules/webpack/bin/webpack.js是一致的),如果存在webpack文件,則運行該文件,如果不存在則會在全局安裝npm模塊的目錄下去尋找相應的文件(在usr/local/bin目錄下的webpack文件是個快捷方式,它指向了usr/local/lib/node_modules/webpack/bin/webpack/bin/webpack.js)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寡喝,一起剝皮案震驚了整個濱河市沙廉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撬陵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巨税,死亡現(xiàn)場離奇詭異粉臊,居然都是意外死亡草添,警方通過查閱死者的電腦和手機扼仲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門抄淑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肆资,你說我怎么就攤上這事≡钪ィ” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵犯犁,是天一觀的道長。 經(jīng)常有香客問我女器,道長,這世上最難降的妖魔是什么驾胆? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮俏拱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锅必。我一直安慰自己,他們只是感情好搞隐,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劣纲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪癞季。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天绷柒,我揣著相機與錄音,去河邊找鬼废睦。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的奈应。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杖挣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了程梦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤屿附,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挺份,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡匀泊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了各聘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡早敬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出大脉,到底是詐尸還是另有隱情,我是刑警寧澤镰矿,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站秤标,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抛杨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一怖现、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屈嗤,春花似錦潘拨、人聲如沸饶号。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琅束。三九已至算谈,卻和暖如春涩禀,著一層夾襖步出監(jiān)牢的瞬間然眼,已是汗流浹背艾船。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工高每, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲸匿。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像带欢,于是被迫代替她去往敵國和親运授。 傳聞我的和親對象是個殘疾皇子洪囤,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在現(xiàn)在的前端開發(fā)中,前后端分離瘤缩、模塊化開發(fā)、版本控制剥啤、文件合并與壓縮锦溪、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,439評論 1 32
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺府怯,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,160評論 7 35
  • 最近在學習 Webpack,網(wǎng)上大多數(shù)入門教程都是基于 Webpack 1.x 版本的,我學習 Webpack 的...
    My_Oh_My閱讀 8,180評論 40 247
  • gulpjs是一個前端構(gòu)建工具牺丙,與gruntjs相比复局,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單亿昏,學...
    井皮皮閱讀 1,296評論 0 10
  • 天下無不散之宴席,我知道這個理角钩,可我卻無法踐行,總是懷念那個已經(jīng)散了的宴席呻澜。 上個周六,一場考試把散在各方的人聚了...
    李木只閱讀 345評論 2 3