如何全局安裝一個 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 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的依賴模塊目錄下
如果有另外一個模塊C末盔,它依賴了一個不同版本的依賴模塊B
在npm3中,不同版本的模塊B會放置到C的依賴模塊下
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)下無差異的工作
- 更快
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)秀的特性:
- 它同時支持commonjs和AMD規(guī)范(甚至混合的形式)凛篙;
- 它可以打成一個完整的包黍匾,也可以分成多個部分,在運行時異步加載(可以減少第一次加載的時間)呛梆;
- 依賴在編譯時即處理完畢锐涯,可以減少運行時包的大小填物;
- Loaders可以使文件在編譯時得到預(yù)處理纹腌,這可以幫我們做很多事情,比如說模板的預(yù)編譯滞磺,圖片的base64處理升薯;
- 豐富的和可擴展的插件可以適應(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",
}
使用 webpack 替換 入門-任務(wù)15中模塊化使用的 requriejs
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地址的天氣