npm-npmscript-gulp-webpack

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

npm install -g packagename

package.json 有什么作用?

package.json是一個json文件,每個項目的根目錄下面,一般都有一個package.json文件牙肝,用于定義項目所需要的各種模塊,以及項目的配置信息(比如名稱嗤朴、版本配椭、許可證等元數(shù)據(jù))。npm install命令根據(jù)這個配置文件雹姊,自動下載所需要的模塊股缸,配置項目所需的運行和開發(fā)環(huán)境。

該文件可以手動創(chuàng)建json文件編寫配置吱雏,也可以用命令行編寫
命令行方法:在指定文件夾內(nèi)乓序,命令行創(chuàng)建語句

npm init

參考:npm package.json屬性詳解

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

npm install --save app:安裝的是項目運行所依賴的模塊,依賴名稱會存到package.json里的"dependencies"字段里坎背;

npm install --save-dev app:安裝的是項目開發(fā)所需要的模塊替劈,依賴名稱會存到package.json里的"devDependencies"字段里。

區(qū)別:比如類似于grunt得滤,babel這類工具陨献,是開發(fā)時使用的,就用--save-dev懂更;而類似于jquery這種是給用戶使用的眨业,就用--save急膀。

node_modules的查找路徑是怎樣的?

node_module:查找依賴的路線是:先從本地目錄下尋找,不存在就依次向上級目錄中查詢龄捡,直到系統(tǒng)根目錄卓嫂。node全局安裝在系統(tǒng)根目錄下,所以全局安裝后可在所有目錄下使用聘殖。

npm3與 npm2相比有什么改進晨雳?yarn和 npm 相比有什么優(yōu)勢? (選做

npm:是node.js的包依賴管理工具,不過有的時候項目依賴過多奸腺,造成路徑過深餐禁,超過了操作系統(tǒng)的文件深度限制。NPM3對此做了很大改進突照。簡單的來說將傳統(tǒng)的嵌套結(jié)構(gòu)改為了平鋪結(jié)構(gòu)

比如帮非,有一個模塊A,依賴 B.
現(xiàn)在有個應(yīng)用依賴A讹蘑,運行
npm install

  • npm3會將模塊B放置到與A同級目錄下
  • 而npm2會將B放置到A的依賴模塊目錄下
image.png

如果有另外一個模塊C末盔,它依賴了一個不同版本的依賴模塊B


image.png

在npm3中,不同版本的模塊B會放置到C的依賴模塊下

image.png

參考:npm3相對于npm2模塊依賴目錄層次的改進

Facebook座慰、Google庄岖、Exponent 和 Tilde 聯(lián)合推出了一個新的 JS 包管理工具 — Yarn,正如官方文檔中寫的角骤,Yarn 是為了彌補 npm 的一些缺陷而出現(xiàn)的:

  • npm 安裝包(packages)的速度不夠快,拉取的 packages 可能版本不同
  • npm 允許在安裝 packages 時執(zhí)行代碼心剥,這就埋下了安全隱患
  • yarn和 npm 相比有什么優(yōu)勢
    • 更快
      yarn緩存了每個下載過的包邦尊,所以再次使用的時候無需重復(fù)下載。同時利用
      并行下載以最大化資源利用率优烧,一次安裝速度更快蝉揍。
    • 更安全
      在執(zhí)行代碼之前,yarn會通過算法校驗每個安裝包的完整性畦娄。
    • 更可靠
      使用詳細和見解的鎖文件格式和明確的安裝算法又沾,yarn能夠保證在不同系統(tǒng)下無差異的工作

參考:Yarn vs npm:你需要知道的一切

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

Webpack 是當(dāng)下最熱門的前端資源模塊化管理和打包工具杖刷。它可以將許多松散的模塊按照依賴和規(guī)則打包成符合生產(chǎn)環(huán)境部署的前端資源。還可以將按需加載的模塊進行代碼分隔驳癌,等到實際需要的時候再異步加載滑燃。通過 loader 的轉(zhuǎn)換,任何形式的資源都可以視作模塊颓鲜,比如 CommonJs 模塊表窘、 AMD 模塊典予、 ES6 模塊、CSS乐严、圖片瘤袖、 JSON、Coffeescript昂验、 LESS 等捂敌。

當(dāng)然靈活的模塊管理只是webpack的眾多特性之一,它還有眾多優(yōu)秀的特性:

  1. 它同時支持commonjs和AMD規(guī)范(甚至混合的形式)凛篙;
  2. 它可以打成一個完整的包黍匾,也可以分成多個部分,在運行時異步加載(可以減少第一次加載的時間)呛梆;
  3. 依賴在編譯時即處理完畢锐涯,可以減少運行時包的大小填物;
  4. Loaders可以使文件在編譯時得到預(yù)處理纹腌,這可以幫我們做很多事情,比如說模板的預(yù)編譯滞磺,圖片的base64處理升薯;
  5. 豐富的和可擴展的插件可以適應(yīng)多變的需求。

npm script是什么击困?如何使用涎劈?

npm script允許在package.json中使用script字段定義腳本命令。通過設(shè)置npm script可以方便的實現(xiàn)前端工作流阅茶。例如:輸入命令npm run start蛛枚,就會執(zhí)行index.js文件。輸入命令npm run begin脸哀,就會在命令行輸出'there it goes'

"scripts": {
    "begin": "echo there it goes!",
    "start": "node index.js",

}

node script 使用

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

代碼
demo

gulp是什么蹦浦?使用 gulp 實現(xiàn)圖片壓縮、CSS 壓縮合并撞蜂、JS 壓縮合并

gulp是前端開發(fā)過程中對代碼進行構(gòu)建的工具盲镶,是自動化項目的構(gòu)建利器;它不僅能對網(wǎng)站資源進行優(yōu)化蝌诡,而且在開發(fā)過程中很多重復(fù)的任務(wù)能夠使用正確的工具自動完成溉贿;使用它,我們不僅可以很愉快的編寫代碼浦旱,而且大大提高我們的工作效率顽照。

gulp是基于Nodejs的自動任務(wù)運行器, 能自動化地完成 javascript/coffee/sass/less/html/image/css 等文件的的測試、檢查代兵、合并尼酿、壓縮、格式化植影、瀏覽器自動刷新裳擎、部署文件生成,并監(jiān)聽文件在改動后重復(fù)指定的這些步驟思币。在實現(xiàn)上鹿响,它借鑒了Unix操作系統(tǒng)的管道(pipe)思想,前一級的輸出谷饿,直接變成后一級的輸入惶我,使得在操作上非常簡單。

全局安裝 gulp:
$ npm install --global gulp
作為項目的開發(fā)依賴(devDependencies)安裝:
$ npm install --save-dev gulp
在項目根目錄下創(chuàng)建一個名為gulpfile.js 的文件:

var gulp = require('gulp'); 
gulp.task('default', function() { 
// 將你的默認(rèn)的任務(wù)代碼放在這 
});

運行 gulp:
$ gulp
默認(rèn)的名為 default 的任務(wù)(task)將會被運行博投,在這里绸贡,這個任務(wù)并未做任何事情。
想要單獨執(zhí)行特定的任務(wù)(task)毅哗,請輸入gulp <task> <othertask>

var gulp = require('gulp');
//引入組件
var minifycss = require('gulp-minify-css'), //css壓縮
    uglify = require('gulp-uglify'), //js壓縮
    minhtml = require('gulp-htmlmin'), //html壓縮
    imagemin = require('gulp-imagemin'), //圖片壓縮
    concat = require('gulp-concat'), //合并文件
    rename = require('gulp-rename'), //重命名
    clean = require('gulp-clean'), //清空文件夾
    jshint = require('gulp-jshint'); //js代碼規(guī)范性檢查
gulp.task('html', function () {
    return gulp.src('src/*.html')
        .pipe(minhtml({collapseWhitespace: true}))
        .pipe(gulp.dest('dist'));
});
gulp.task('css', function () {
    gulp.src('src/css/*.css')
        .pipe(concat('merge.min.css'))
        .pipe(rename({
            suffix: '.min'
}))
        .pipe(minifycss())
        .pipe(gulp.dest('dist/css/'));
});
gulp.task('js', function () {
    gulp.src('src/js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'))
        .pipe(concat('merge.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('dist/js/'));
});
gulp.task('img', function () {
    gulp.src('src/imgs/*')
        .pipe(imagemin())
        .pipe(gulp.dest('dist/imgs'));
});
gulp.task('clear', function () {
    gulp.src('dist/*', {read: false})
        .pipe(clean());
});
gulp.task('build', ['html', 'css', 'js', 'img']);//執(zhí)行npm gulp build

開發(fā)一個 node 命令行天氣應(yīng)用用于查詢用戶當(dāng)前所在城市的天氣听怕,發(fā)布到 npm 上去÷敲啵可以通過如下方式安裝使用(可使用api.jirengu.com里提供的查詢天氣接口) (選做)

npm install yqy-weather -g
weather guangzhou //需要使用城市拼音尿瞭,不輸入城市,將顯示當(dāng)前IP地址的天氣

天氣npm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翅睛,一起剝皮案震驚了整個濱河市声搁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捕发,老刑警劉巖疏旨,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異爬骤,居然都是意外死亡,警方通過查閱死者的電腦和手機莫换,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門霞玄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拉岁,你說我怎么就攤上這事坷剧。” “怎么了喊暖?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵惫企,是天一觀的道長。 經(jīng)常有香客問我,道長狞尔,這世上最難降的妖魔是什么丛版? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮偏序,結(jié)果婚禮上页畦,老公的妹妹穿的比我還像新娘。我一直安慰自己研儒,他們只是感情好豫缨,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著端朵,像睡著了一般好芭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冲呢,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天舍败,我揣著相機與錄音,去河邊找鬼碗硬。 笑死瓤湘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恩尾。 我是一名探鬼主播弛说,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翰意!你這毒婦竟也來了木人?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤冀偶,失蹤者是張志新(化名)和其女友劉穎醒第,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體进鸠,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡稠曼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了客年。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霞幅。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖量瓜,靈堂內(nèi)的尸體忽然破棺而出司恳,到底是詐尸還是另有隱情,我是刑警寧澤绍傲,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布扔傅,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猎塞。R本人自食惡果不足惜试读,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邢享。 院中可真熱鬧鹏往,春花似錦、人聲如沸骇塘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽款违。三九已至唐瀑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間插爹,已是汗流浹背哄辣。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赠尾,地道東北人力穗。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像气嫁,于是被迫代替她去往敵國和親当窗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

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

  • 題目1: 如何全局安裝一個 node 應(yīng)用? “全局安裝”指的是將一個模塊安裝到系統(tǒng)目錄中寸宵,各個項目都可以調(diào)用崖面。一...
    saintkl閱讀 294評論 0 0
  • 1.如何全局安裝一個 node 應(yīng)用? 打開你的命令行工具輸入npm install 'packages name...
    Rising_suns閱讀 346評論 0 0
  • 1. 如何全局安裝一個 node 應(yīng)用? 在終端輸入npm install -g pkg pkg為安裝包的名字pk...
    _李祺閱讀 220評論 0 1
  • 題目1: 如何全局安裝一個 node 應(yīng)用? npm install -g xx 題目2: package.jso...
    GaoYangTongXue丶閱讀 574評論 0 0
  • 最近關(guān)注的公眾微信號,都在推送一部動畫梯影,叫血色蒼穹巫员,口碑還不錯,查閱相關(guān)資料發(fā)現(xiàn)甲棍,剛出第一天就已經(jīng)很火了简识,...
    初音琉璃社閱讀 236評論 0 0