npm原理
npm 腳本的原理非常簡單耕拷。每當(dāng)執(zhí)行npm run,就會(huì)自動(dòng)新建一個(gè) Shell托享,在這個(gè) Shell 里面執(zhí)行指定的腳本命令骚烧。因此,只要是 Shell(一般是 Bash)可以運(yùn)行的命令闰围,就可以寫在 npm 腳本里面赃绊。
特別的是,npm run新建的這個(gè) Shell羡榴,會(huì)將當(dāng)前目錄的node_modules/.bin子目錄加入PATH變量碧查,執(zhí)行結(jié)束后,再將PATH變量恢復(fù)原樣校仑。
這就意味著忠售,當(dāng)前目錄下的node_modules/.bin子目錄里面的所有腳本,都可以直接用腳本名調(diào)用迄沫,而不必加上路徑稻扬。
scripts 配置
其實(shí),scripts的配置就是把bash里面執(zhí)行的命令羊瘩,寫到scripts對(duì)象里泰佳,具體怎么寫要看每個(gè)腳本的配置方法E慰场!J潘3耐ⅰ!
首先汽绢,我們需要搞清楚如何使用 npm 來管理構(gòu)建腳本吗跋。作為核心命令之一的 npm run-script 命令(簡稱 npm run )可以從 package.json 中解析出 scripts 對(duì)象,然后將該對(duì)象的key作為 npm run 的第一個(gè)參數(shù)宁昭,它會(huì)在操作系統(tǒng)的默認(rèn)終端中執(zhí)行該key對(duì)應(yīng)的命令跌宛,請(qǐng)看下面的 package.json 文件:
{
"name": "express-sticky-note",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"webpack": "webpack --config ./src/webpack.config.js",
"watch": "onchange 'src/**/*.js' 'src/**/*.less' -- npm run webpack"
},
"devDependencies": {
"onchange": "^3.2.1",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.4.2"
}
}
如果運(yùn)行npm run webpack
,那么 npm 將在bash中執(zhí)行webpack --config ./src/webpack.config.js
,如果運(yùn)行npm run watch
,那么將在bash中執(zhí)行onchange 'src/**/*.js' 'src/**/*.less' -- npm run webpack
另外,我們還可以合并scripts命令,比如在上面的代碼中加入all命令积仗,那么當(dāng)我們運(yùn)行npm run all命令的時(shí)候疆拘,npm run webpack 和 npm run watch兩個(gè)命令都會(huì)執(zhí)行了
{
"name": "express-sticky-note",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"webpack": "webpack --config ./src/webpack.config.js",
"watch": "onchange 'src/**/*.js' 'src/**/*.less' -- npm run webpack",
"all":"npm run webpack && npm run watch" //&&表示順序執(zhí)行,&表示同時(shí)執(zhí)行
},
"devDependencies": {
"onchange": "^3.2.1",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.4.2"
}
}