我对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安装都会这样做,或者告诉你如何去做)。 –