1.如何全局安裝一個 node 應(yīng)用?
npm install -g <package_name>
2.package.json 有什么作用?
1.定義了模塊的配置信息(名稱、版本日杈、許可證、依賴等)佑刷,
2.通過命令npm install
根據(jù)這個配置文件莉擒,下載所需模塊配置環(huán)境,便于開發(fā)者之間的協(xié)作
3. npm install --save app
與 npm install --save-dev app
有什么區(qū)別?
a.npm installl --save app
會在package.json中的dependencies中添加運行時依賴瘫絮,產(chǎn)品發(fā)布后仍需要依靠這些工具運行涨冀;
當(dāng)下載一個node包時執(zhí)行npm install
可以安裝dependencies
下的依賴,而不會安裝devDependencies
下的依賴
"dependencies" {
"axios": "^0.16.2"
}
b.npm install --save-dev app
則會在devDependencies添加開發(fā)依賴檀何,這些工具是開發(fā)時使用的蝇裤,如gulp,產(chǎn)品發(fā)布后不需要使用這些工具频鉴。
"devDependencies": {
"gulp": "^3.9.1"
}
4.node_modules的查找路徑是怎樣的?
首先是當(dāng)前文件夾下的node_modules,然后向上一級查找node_modules恋拍,一直到根目錄為止
5.npm3與 npm2相比有什么改進垛孔?yarn和 npm 相比有什么優(yōu)勢?
參考文獻
1.Yarn vs npm: 你需要知道的一切
2.玩轉(zhuǎn)npm
3.一文看懂npm、yarn施敢、pnpm之間的區(qū)別
4.npm 依賴解決方案
a.npm3與 npm2相比有什么改進周荐?
- npm3將依賴模塊扁平化存放,減輕了npm2中過長依賴嵌套的問題
b.Yarn和 npm 相比有什么優(yōu)勢?
- Yarn默認(rèn)每次安裝應(yīng)用都會創(chuàng)建或更新
yarn.lock
文件僵娃,以此保證其他機器安裝相同版本的依賴 - 默認(rèn)情況下Yarn的安裝速度更快概作,Yarn并行下載和安裝
- Yarn支持離線安裝
- Yarn在每個安裝包的代碼執(zhí)行前使用校驗碼驗證包的完整性
6. webpack是什么?和其他同類型工具比有什么優(yōu)勢默怨?
webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的模塊打包器(module bundler)讯榕。當(dāng) webpack 處理應(yīng)用程序時,它會遞歸地構(gòu)建一個依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個模塊愚屁,然后將所有這些模塊打包成少量的 bundle - 通常只有一個济竹,由瀏覽器加載。
- webpack將項目當(dāng)做一個整體霎槐,通過給定的入口文件(如:index.js)送浊,找到你的項目的所有依賴文件,使用loaders和plugins來處理它們丘跌;(與gulp相比袭景,gulp是對每一種資源單獨處理,并沒有整體的概念)
- webpack將所有資源都視為模塊闭树,所以諸如less,json,jpg等各種資源都可以被處理浴讯;
- webpack根據(jù)需要將文件切分,避免模塊過多導(dǎo)致的請求過多蔼啦,也避免只請求一次榆纽,文件過大導(dǎo)致的加載緩慢問題。(與r.js requirejs)
7. npm-scripts是什么捏肢?如何使用奈籽?
npm 允許在package.json文件里面,使用scripts字段定義腳本命令鸵赫。
通過它衣屏,可以進行很多快捷操作。
以下為一個package.json中的scripts片段辩棒;
如下狼忱,命令行執(zhí)行npm run build
相當(dāng)于執(zhí)行node index.js
本地安裝webpack后,命令行執(zhí)行npm run webpack
相當(dāng)于執(zhí)行./node_modules/webpack/bin/webpack.js
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build":"node index.js",
"webpack": "webpack",
"server": "webpack-dev-server --open"
},
其中test一睁,start等npm固有命令钻弄,可以通過npm {name}
,其他自定義name通過npm run {name}
來執(zhí)行
8.使用 webpack 替換 入門-任務(wù)15中模塊化使用的 requriejs
9.gulp是什么者吁?使用 gulp 實現(xiàn)圖片壓縮窘俺、CSS 壓縮合并、JS 壓縮合并
gulp是一款打造前端自動化工作流的node應(yīng)用复凳,包括:打包瘤泪,壓縮,合并育八,git对途,遠程操作等;
//gulpfile.js
var gulp = require('gulp')
var imagemin = require('gulp-imagemin');
var csso = require('gulp-csso');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
gulp.task('img',function () { //圖片壓縮
gulp.src('src/img/**/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/imgs'))
})
gulp.task('css',function () { //css壓縮合并
gulp.src('src/css/*.css')
.pipe(csso())
.pipe(concat('merge.css'))
.pipe(gulp.dest('dist/css/'))
})
gulp.task('js',function () { //js壓縮合并
gulp.src('src/**/*.js')
.pipe(uglify())
.pipe(concat('merge.js'))
.pipe(gulp.dest('dist/js'))
})
gulp('default',['img','css','js']) //命令行執(zhí)行g(shù)ulp即可