javascript - babel如何正確安裝使用?
問題描述
大家好,我又來了距離上次詢問babel安裝已經有一段時間了,惡補了一下有關于npm的知識,看阮一峰老師的教程終于不是那么懵逼了嘿嘿距離上一次提問還是有進步的/q/10...首先我創建了一個Babel文件夾
1 創建一個.babelrc文件2 npm init 一直點回車創建了一個package.json文件3 安裝npm install --save-dev babel-preset-es2015
npm install --save-dev babel-preset-react 寫入.babelrc中
安裝 npm install --save-dev babel-cli改寫package.json文件,添加scripts用于npm run執行的時候用到
此時的目錄結構,在hello.js中寫了一個類 class Foo{},到這里都一帆風順
參考阮一峰老師的教程npm run build的時候報錯,babel-node也不好用,有點讓我不明白首先我嘗試刪除lib文件夾 依然報錯,然后看錯誤信息,確保安裝的是最新版本的node和npm,這個沒問題從官網上下的最新版本,npm也是3.10.10. 可能是demo這個package出了問題,而不是npm本身。求如何解決感激不盡
問題解答
回答1:你缺乏的是命令行的基本知識,無關乎 npm 還是 babel.
你的 npm run build 不成功的原因是,你沒有按照教程正確建立文件夾!!!
報錯信息很明顯,“src doesn’t exist” ,src 目錄不存在啊親!讀不懂報錯也是讓人糾結!
這就是別人告訴你這里錯了,你看到了,偏不看進腦子里,然后一直納悶我為啥錯了啊為啥錯了啊,可是人家分明已經告訴你了啊,babel很蒙蔽啊,npm也很蒙蔽啊,babel說勞資都找不到 src 目錄 而且我都輸出了具體的錯誤了啊 。。。。。。。
好我們回過頭來說說“命令行”。
命令一般對應一個可執行文件或者腳本文件,一般是一個字符串,你在shell或者cmd里敲入這個命令,就等價于你雙擊執行這個可執行文件。命令后面跟的東西,叫“參數”。系統怎么知道有沒有某個命令呢?簡單理解吧,有兩個地方系統回去尋找,全局目錄和相對目錄。比如cmd里,光標前面有個'路徑>',這個是你的當前路徑。你輸入 npm 這個命令,系統會先查找當前目錄有沒有npm這個可執行文件,然后查找全局路徑下有沒有npm,你裝node的時候npm被安裝到了全局,所以npm被找到了,順利執行。
好我們來具體解釋一下 npm run 這個命令。 npm run 會查找當前目錄下的package.json,找到 script 這個字段里配置的命令。這個你已經知道里。有一個你不知道的,npm run 會把當前目錄下的 node_modules/.bin 目錄臨時地加到當前的系統查找路徑列表里,也就是說,npm run build,build我們配置的命令是“babel src -d lib”, 系統會被要求執行這個我們配置好的命令。babel這個字符是一個命令,系統不識別它,所以要查找有沒有對應的可執行文件,當前目錄下沒有,因此會搜索 node_modules/.bin 這個目錄,如果這個也沒有,系統會搜索全局目錄。 記住 node_modules/.bin 這個查找邏輯只有在 npm run 里執行的才會有。
npm install --save-dev babel-cli 會把babel-cli安裝到項目目錄下的node_modules里,因此npm run build 可以正常執行。npm run build這時候等價于: project_dir> node_modules/.bin/babel src -d lib
再來說說 babel 命令,src -d lib,這個不看babel文檔也能猜到, src是源目錄,是告訴babel讓它處理 src 目錄下的js,-d 表示我要聲明目標目錄參數啦,lib是目標目錄參數的值,也就是告訴babel把src目錄下的js轉義到lib目錄。
這是命令行的基本使用能力。。。
回答2:babel如果不是全局安裝,不能直接在控制臺用 可以通過npm 腳本的方式調用
相關文章:
1. list - python 求助2. linux - Ubuntu下編譯Vim8(+python)無數次編譯失敗3. python - TypeError: tryMsgcode() takes exactly 2 arguments (0 given)4. javascript - react,獲取radio的值出錯5. css - 移動端 line-height安卓錯位,蘋果機正常用,縮放解決了,可是又出來了占位的問題6. extra沒有加載出來7. javascript - 彈出一個子窗口,操作之后關閉,主窗口會得到相應的響應,例如網站的某些登錄界面,django后臺的管理等,這是怎么實現的呢?8. 環境搭建 - anaconda 創建python2.7環境中打開編譯器確是3.6版本9. mysql replace 死鎖10. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?
