npm/gulp/webpack

如何全局安裝一個 node 應(yīng)用?

通過下面這個命令可以全局安裝一個node應(yīng)用

npm install --global appName

簡寫形式

npm i -g appName

通過全局安裝的node應(yīng)用會存放在'/usr/local/lib/node_modules'中稼虎。

package.json有什么作用衅檀?

package.json是.json格式文件,記錄了node包的相關(guān)信息霎俩,如依賴哀军,版本號,名字等打却,每當用戶 npm install或使用命令行的時候杉适,就會根據(jù)package下載相關(guān)依賴和執(zhí)行相關(guān)文件。下面有幾個比較重要的信息

"name": appName
//記錄了這個node應(yīng)用的名字
"version": "1.0.0"
//記錄了node應(yīng)用的版本柳击,每次更新發(fā)布node包猿推,都要更新version
"description": ""
//node應(yīng)用的相關(guān)描述
"main": "index.js"
//node應(yīng)用的入口文件
"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
}
//script可以集成一些命令行,通過'npm run + 命令行的名字'執(zhí)行該命令行捌肴,簡化操作
//有的命令名npm本身有定義蹬叭,如test,star就不需要run
//script還有一個很重要的功能状知,就算我們不是做node包秽五,也可以使用script功能來構(gòu)建工作流
"dependencies": {}
//dependencies記錄了node應(yīng)用的相關(guān)依賴
"devDependencies": {}
//devDependencies記錄了該node應(yīng)用的開發(fā)依賴
//是node應(yīng)用開發(fā)過程中用到,但和功能不相關(guān)的依賴饥悴,如debug等

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

兩條命令都是在本地安裝node應(yīng)用筝蚕,安裝在node_module文件夾中
現(xiàn)在假設(shè)我們在寫一個node應(yīng)用卦碾,用到app1和app2。
我們的node應(yīng)用依賴app1起宽,是node應(yīng)用功能的一部分洲胖,沒有app1,我們的node應(yīng)用就跑不起來坯沪,這時候就要使用npm install --save app命令安裝app1绿映,這個命令在安裝app1的同時,會把信息寫入到我們node應(yīng)用的package.json文件的dependencies中腐晾,用戶install我們的應(yīng)用時就會根據(jù)這條信息下載相關(guān)的依賴
此外叉弦,開發(fā)中我們還用到了app2進行輔助開發(fā),app2和我們的應(yīng)用功能沒關(guān)系藻糖,是用來debug淹冰、測試、打包之類的巨柒,這種時候就可以使用 npm install --save-dev app來安裝app2樱拴,安裝的同時把信息記錄到devDependencies,用戶install應(yīng)用是不會下載相關(guān)app,app2為開發(fā)依賴

node_modules的查找路徑是怎樣的?

在node.js中洋满,模塊分為內(nèi)建模塊晶乔,本地模塊,node_module模塊
當我們require一個模塊時牺勾,先查找是否為內(nèi)建模塊正罢,然后是否為本地模塊,最后查找是否為node_module模塊
當require的模塊既不是內(nèi)建模塊驻民,也不是本地模塊翻具,且在當前目錄中的node_module中也找不到時,就會向上查找上一級的node_module回还,一直到根目錄
當文件標識不以'./ ../'開頭呛占,則跳過本地模塊查找,直接在node_module中查找

npm3與npm2相比有什么改進懦趋?yarn和npm相比有什么優(yōu)勢?

npm3改進了一些依賴算法
假設(shè)有兩個包晾虑,app1和app2
app1呢依賴a1和b1
app2呢依賴a1和b2
在npm2下,會把兩個包的依賴完全下載下來仅叫,分別放在app1和app2下帜篇,如圖所示

npm2

npm3則會分析這幾個包有哪些共同依賴,把共同依賴的包放在一起诫咱,共同使用笙隙,單獨依賴包另外下載,如圖所示

npm3

npm3比npm2更節(jié)省空間坎缭,但是npm2的結(jié)構(gòu)目錄更加清晰
yarn是Facebook推出的JS包管理器竟痰,yarn 是為了彌補 npm 的一些缺陷而出現(xiàn)的
1.npm在拉取包的時候签钩,是從package.json中讀取依賴信息,但是版本號不太會寫得非常確切坏快,通常是定個版本范圍铅檩,這樣會導致不同的人獲取的包依賴版本可能不一樣,導致出現(xiàn)意外情況
yarn則通過一個yarn.lock文件莽鸿,鎖定了這個包的依賴模塊的確切版本號昧旨,在你新增或更新依賴時,都會更新yarn.lock文件祥得。每次拉取這包兔沃,都會嚴格按照yarn.lock中的信息拉取,保證每個人拉取的包都是一致的级及。
2.npm在安裝包時輸出信息比較冗長乒疏,yarn則省去許多無用信息,只輸出有用的信息饮焦。
3.yarn在拉取包的速度是要優(yōu)于npm

Yarn is only a new CLI client that fetches modules from the npm registry. Nothing about the registry itself will change — you’ll still be able to fetch and publish packages as normal.

yarn拉取的包還是來自于npm倉庫怕吴,yarn只是一個新的用來操作npm倉庫的cli

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

webpack是一個模塊加載器和打包工具追驴,它能把JS/css/圖片等等的資源打包成模塊使用
它的優(yōu)勢:
1.以CommonJS規(guī)范書寫模塊,同時也支持AMD疏之、CMD規(guī)范
2.webpack本身只能讀取JS殿雪,但可以使用loadsh將各種資源打包轉(zhuǎn)換成JS模塊,因此webpack不僅可以打包JS锋爪,還可以是css/html/圖片等等
3.強大的插件系統(tǒng)

npm scripts是什么丙曙?如何使用?

npm scripts是package.json中的一條信息

"scripts" : {
      "test": "echo hello"其骄,
      "build": //command line
}

npm scripts中可以定義一些命令行亏镰,供npm快捷調(diào)用,像上面的例子拯爽,只要在命令行中輸入npm test索抓,就會執(zhí)行echo hello這條語句
npm中內(nèi)置了一些像是'test','star'這樣快捷命令,只要在scripts中定義好毯炮,直接就可以使用

npm test
npm star

但是其他的自定義快捷命令就要使用run逼肯,像上面的'build',就要這樣使用

npm run build

使用npm scripts桃煎,可以大大簡化命令行的操作篮幢,建立快速工作流程

gulp是什么?使用gulp實現(xiàn)圖片壓縮为迈、CSS壓縮合并三椿、JS壓縮合并

gulp是一個以流為基礎(chǔ)的前端自動化構(gòu)建工具缺菌,可以實現(xiàn)css的壓縮合并、js壓縮合并搜锰、圖片壓縮等等
下面是gulpfile.js一些配置

var gulp = require('gulp'),
    cssnano = require('gulp-cssnano'),   //css壓縮
    autoprefixer = require('gulp-autoprefixer'),    //css前綴
    imagemin = require('gulp-imagemin'),  //圖片壓縮
    babel = require('gulp-babel'),      //es6轉(zhuǎn)換es5
    uglify = require('gulp-uglify'),      //js壓縮
    concat = require('gulp-concat')    //文件合并


//css自動前綴和壓縮合并
gulp.task('merge:css',function() {
    gulp.src('./src/css/*.css')
        .pipe(autoprefixer({
            browsers: ['last 4 versions'],
            cascade: false
        }))
        .pipe(cssnano())
        .pipe(gulp.dest('./dist/css'))
})

//圖片壓縮
gulp.task('merge:images',function() {
    gulp.src('./src/images/*.{jpg,png,gif}')
        .pipe(imagemin())
        .pipe(gulp.dest('./dist/images'))
})

//js壓縮
gulp.task('merge:js',function() {
    gulp.src('./src/js/*.js')
        .pipe(babel({
            presets: ['env' ]
        }))
        .pipe(uglify())
        .pipe(concat('main.js'))
        .pipe(gulp.dest('./dist/js'))
})

webpack改寫企業(yè)站

Demo
源碼

天氣小工具伴郁!

npm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纽乱,隨后出現(xiàn)的幾起案子蛾绎,更是在濱河造成了極大的恐慌,老刑警劉巖鸦列,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件租冠,死亡現(xiàn)場離奇詭異,居然都是意外死亡薯嗤,警方通過查閱死者的電腦和手機顽爹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骆姐,“玉大人镜粤,你說我怎么就攤上這事〔M剩” “怎么了肉渴?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長带射。 經(jīng)常有香客問我同规,道長,這世上最難降的妖魔是什么窟社? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任券勺,我火速辦了婚禮,結(jié)果婚禮上灿里,老公的妹妹穿的比我還像新娘关炼。我一直安慰自己,他們只是感情好匣吊,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布儒拂。 她就那樣靜靜地躺著,像睡著了一般色鸳。 火紅的嫁衣襯著肌膚如雪侣灶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天缕碎,我揣著相機與錄音褥影,去河邊找鬼。 笑死咏雌,一個胖子當著我的面吹牛凡怎,可吹牛的內(nèi)容都是我干的校焦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼统倒,長吁一口氣:“原來是場噩夢啊……” “哼寨典!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起房匆,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耸成,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后浴鸿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體井氢,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年岳链,在試婚紗的時候發(fā)現(xiàn)自己被綠了花竞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡掸哑,死狀恐怖约急,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苗分,我是刑警寧澤厌蔽,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站摔癣,受9級特大地震影響奴饮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜供填,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一拐云、第九天 我趴在偏房一處隱蔽的房頂上張望罢猪。 院中可真熱鬧近她,春花似錦、人聲如沸膳帕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽危彩。三九已至攒磨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汤徽,已是汗流浹背娩缰。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谒府,地道東北人拼坎。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓浮毯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泰鸡。 傳聞我的和親對象是個殘疾皇子债蓝,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

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

  • 題目1: 如何全局安裝一個 node 應(yīng)用? Node模塊采用npm install命令安裝。 每個模塊可以“全局...
    蕭雪圣閱讀 1,782評論 0 1
  • 如何全局安裝一個 node 應(yīng)用? npm install -g package.json 有什么作用盛龄? 可以理解...
    邢烽朔閱讀 576評論 0 1
  • 題目1: 如何全局安裝一個 node 應(yīng)用? 題目2: package.json 有什么作用饰迹? 每個項目的根目錄下...
    饑人谷_Jack閱讀 265評論 0 0
  • 題目1: 如何全局安裝一個 node 應(yīng)用? 如果下載速度比較慢,可以使用淘寶的鏡像 install 可以縮寫成 ...
    輝夜乀閱讀 420評論 0 0
  • 面對考研 也許會有人說你不自量力余舶,或者說你不可能 是的啊鸭,說的沒錯,因為我自己也這樣覺得欧芽,因為我學習差莉掂,基礎(chǔ)差,又沒...
    1860fb3b42da閱讀 84評論 2 1