我對webpack的工作原理有些困惑。如果您在根目錄中運行npm install examplePackage
,是否將軟件包安裝到硬盤上?那麼這是否意味着您可以隨時在任何文件中導入該軟件包?這與在項目中運行npm install examplePackage
不同,這與之有何不同?是因爲當你將項目推送到Github時,會有一個package.json供其他人使用,並確保他們有必要的庫來運行你的應用程序?節點知道如何通過項目搜索包或硬盤驅動器?它只是先檢查你的圖書館,然後如果它沒有找到它,它會看你的硬盤?全球webpack安裝與項目特定的webpack安裝
回答
npm install examplePackage
將在當前目錄的node_modules
中安裝軟件包。當您使用require('examplePackage')
導入Node.js中的模塊時,它首先檢查它是否是核心模塊(例如fs)。如果它不是核心模塊,則開始查找當前目錄的node_modules
。如果在該目錄中找不到該模塊,則會移至父目錄並檢查其目錄。等到找到該模塊或到達文件系統的根目錄爲止。請參見https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders
這確實意味着您可以從文件系統的任何位置導入已安裝在/
中的軟件包。儘管在/
中只安裝所有依賴關係是可能的,但具有項目特定依賴關係的優點很多。可能最大的優點是,您可以輕鬆地與其他人共享您的項目,並且可以確保它能夠爲他們工作(假設兼容的Node.js版本)。
節點知道如何通過您的項目搜索包或硬盤?
它只在你的硬盤上,特別是在上面提到的node_modules
目錄中。正如您已經注意到的,您可以在package.json
中指定依賴關係,但節點本身對此信息不做任何處理。相反,您需要運行npm install
,這將安裝所有列出的依賴關係package.json
。之後,您可以正確導入這些模塊。
注:npm install examplePackage
不添加examplePackage
您package.json
,它只是安裝它。如果您想將其作爲依賴項添加,請使用npm install --save examplePackage
或者將其作爲npm install --save-dev examplePackage
的devDependency。 https://docs.npmjs.com/cli/install
CLI
命令行工具或通常與可執行文件,如包的WebPack,在node_modules/.bin
,爲了執行它們可用,他們必須要麼在你的shell PATH
或直接調用。由於項目調用本地安裝的可執行文件非常常見,因此您可以在package.json
的scripts
部分使用它們,而無需在node_modules/.bin
前添加它們。例如,爲了運行的WebPack你可以定義的腳本:
"scripts": {
"build": "webpack"
}
然後運行npm run build
而不必運行./node_modules/.bin/webpack
的。有關腳本的更多信息:https://docs.npmjs.com/misc/scripts
- 1. 安裝項目全球化
- 2. Webpack安裝錯誤
- 3. Webpack無法解析全球安裝的babel或babel-loader
- 4. 不能與NPM安裝的WebPack
- 5. Webpack不在Linux上安裝
- 6. 如何安裝Angular2 Webpack Starter?
- 7. 如何確定安裝的webpack版本
- 8. 使用webpack安裝React時未定義
- 9. Gulp全球安裝
- 10. 模塊未通過NPM安裝資產的WebPack-插件安裝
- 11. 的WebPack不同的安裝命令
- 12. Uncaught ReferenceError:require在Angular 2 webpack全局庫安裝中沒有定義
- 13. 如何確定Meteor是否全球安裝?我應該全球安裝嗎?
- 14. 安裝前安裝/安裝項目檢查以前安裝的項目?
- 15. 無法使用npm安裝webpack
- 16. 我們如何在Windows上安裝webpack?
- 17. 在webpack中安裝咖啡腳本庫
- 18. Webpack css安裝和最佳實踐
- 19. npm安裝後出現Webpack錯誤
- 20. 使用angular-cli webpack安裝Bower
- 21. 安裝jQuery給出了webpack錯誤
- 22. 全球安裝 - Flask&Python
- 23. Laravel 4全球安裝
- 24. 全球安裝流星包
- 25. Ember.js無法安裝全球
- 26. 指定Windows服務名稱與安裝項目安裝
- 27. 如何與安裝項目
- 28. 安裝從Visual Studio安裝項目
- 29. C#安裝項目安裝在C:
- 30. Webpack scss包裝
對於webpack,如果你'npm install webpack -g',並且你運行'npm build',它不會工作,因爲它沒有在本地安裝到你的項目中?如果您將腳本部分放在package.json中,那麼它是否仍然能夠在根目錄中找到webpack? – stackjlei
它會工作,如果它在你的shell的'PATH'中。全局安裝(使用'-g')包應該放在你的'PATH'中(大多數的Node.js安裝都會這樣做,或者告訴你如何去做)。 –