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 不成功的原因是,你沒有按照教程正確建立文件夾?。。?/p>
報錯信息很明顯,“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. javascript - 數組原聲方法中的一段代碼2. javascript - 前端開發 本地靜態文件頻繁修改,預覽時的緩存怎么解決?3. java - public <T> T findOne(T record) 這是什么意思4. 使用uuid,并不能利用mysql的索引,有什么解決辦法?5. android - 優酷的安卓及蘋果app還在使用flash技術嗎?6. JavaScript如何循序漸進,有效的學習?看不下去怎么辦?7. docker不顯示端口映射呢?8. python - linux怎么在每天的凌晨2點執行一次這個log.py文件9. css - 關于ul的布局10. mysql數據庫每次查詢是一條線程嗎?
