在package.json
文件中,我們常常會看到這樣的代碼,並且也知道如何去執行腳本命令,但是,我們為什么可以這樣使用呢?通過仔細閱讀幾篇文章,已經基本得到了答案,這里做一個簡單的提煉、理解和記錄。
一、什么是 npm 腳本
package.json
文件里面的scripts
字段中定義的就是npm腳本
二、npm腳本的原理
每當執行npm run
,就會自動新建一個 Shell,在這個 Shell 里面執行指定的腳本命令。
三、什么是shell和bash
Shell
,直譯過來就是“殼”的意思,它的官方定義如下:
總的來說,shell
就是充當了計算機命令與計算機語言(0和1)的翻譯官。當我們在控制台發出指令后,經過shell
的翻譯這些命令將變成計算機語言,也就是1和0,最后反映在高低電壓的不同上,然后計算機中的那些電子器件就能按照我們的要求進行相應的動作了。而bash
呢,就是shell
的一種,shell
可以看做是一種語言名稱,其具體的語法則遵循bash
或csh
的規定。
四、傳參
向 npm 腳本傳入參數,要使用--標明。
五、默認值
六、簡寫形式
七、NODE_ENV是什么
想要知道NODE_ENV
是什么,首先要了解process.env
對象,它是Node.js中暴露出來的系統環境變量,因此我們可以對process.env
添加一個自定義屬性NODE_ENV
並設置值,而之所以我們在設置的時候直接這樣寫: NODE_ENV=production
,可能是scripts
中定義的變量會默認添加到process.env
下面
八、實際應用
參考鏈接1:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html => npm scripts 使用指南
參考鏈接2:https://www.jianshu.com/p/a702a01db5c7 => 什么是shell和bash
參考鏈接3:https://www.jianshu.com/p/83e8909fc1cd => NODE_ENV
參考鏈接4:https://nodejs.org/dist/latest-v10.x/docs/api/process.html#process_process_env => process.env
參考鏈接5:https://www.npmjs.com/package/cross-env => cross-env