npm腳本命令npm run script的使用

npm 能夠在項目package.json裏面自定義腳本命令node

package.json文件

{
  "script":{
    "dev": "webpack -w"
  }
}

package.json文件中的字段script的每個屬性都是一個自定義的腳本命令。webpack

在命令行中能夠經過執行npm run dev來執行這段腳本。web

執行原理shell

使用npm run script執行腳本的時候都會建立一個shell,而後在shell中執行指定的腳本。npm

這個shell會將當前項目的可執行依賴目錄(即node_modules/.bin)添加到環境變量path中,當執行以後以後再恢復原樣。就是說腳本命令中的依賴名會直接找到node_modules/.bin下面的對應腳本,而不須要加上路徑。json

執行順序post

 

一個npm腳本能夠執行多個任務,這些任務之間能夠指定不一樣的執行順序。this

'&' 並行執行順序,同時執行
"dev":"node test.js & webpack"

'&&'繼發順序,執行前面以後才能夠執行後面
"dev":"node test.js && webpack"

順序鉤子spa

npm腳本自帶兩個順序鉤子,'pre' 和 'post'命令行

"predev":"node test_one.js",
"dev":"node test_two.js",
"postdev":"node test_three.js"

當執行 npm run dev 的時候默認就會執行

npm run predev && npm run dev && npm run postdev

獲取當前正在運行的腳本名稱

npm 提供一個npm_lifecycle_event變量,返回當前正在運行的腳本名稱,能夠配合順序鉤子使用

npm run dev


const target = process.env.npm_lifecycle_event;

if(target === 'predev'){
  console.log('the process is predev')  
}
if(target === 'dev'){
  console.log('the process is dev')
}
if(target === 'postdev'){
  console.log('this process is postdev')
}

 

四個能夠簡寫的腳本執行命令

npm start === npm run start
npm stop === npm run stop
npm test === npm run test
npm restart === npm run stop && npm run restart && npm run start

使用package.json內部變量

經過npm_package_前綴,npm腳本能夠拿到npm的內部變量

package.json:
{
  "name":"zzpzds",
  "script":"node test.js"
}

test.js:
console.log(process.env.npm_package_name) //zzpzds
相關文章
相關標籤/搜索