全局 webpack 安装与项目特定的 webpack 安装
Global webpack install vs. project specific webpack install
我对 webpack 的工作方式有些困惑。如果您 运行 npm install examplePackage
在您的根目录中,是否会将软件包安装到您的硬盘驱动器?那么这是否意味着您可以随时在任何文件中导入该包?这与 运行 在您的项目中使用 npm install examplePackage
有何不同?是因为当你将你的项目推送到 Github 时,会有一个 package.json 供其他人关注并确保他们也有 运行 你的应用程序所需的库吗?节点如何知道要在您的项目中搜索包还是在您的硬盘中搜索?它是否只是先检查您的图书馆,然后如果没有找到它,它会在您的硬盘中查找?
npm install examplePackage
将在当前目录的 node_modules
中安装软件包。当您使用 require('examplePackage')
在 Node.js 中导入模块时,它首先检查它是否是核心模块(例如 fs). If it isn't a core module it starts looking in node_modules
of the current directory. If the module is not found in that directory, it moves to the parent directory and checks its node_modules
directory. And so on until the module was found or the root of the file system is reached. See https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders
这确实意味着您可以从文件系统的任何位置导入已安装在 /
中的软件包。尽管可以只安装 /
中的所有依赖项,但拥有项目特定的依赖项有很多优点。可能最大的优势是您可以轻松地与他人分享您的项目,并且您可以确定它会为他们工作(假设兼容 Node.js 版本)。
How does node know to search thru either your project for a package or your hard drive?
它只在您的硬盘上查找,特别是在上面提到的 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
node_modules/.bin
中提供了命令行工具或通常带有可执行文件的软件包,例如 webpack,为了执行它们,它们必须在您的 shell 中 [=28] =] 或直接调用。因为项目调用本地安装的可执行文件是很常见的,所以您可以在 package.json
的 scripts
部分使用它们,而无需在它们前面加上 node_modules/.bin
。例如 运行 webpack 你可以定义一个脚本:
"scripts": {
"build": "webpack"
}
然后 运行 npm run build
而不是 运行 ./node_modules/.bin/webpack
。有关脚本的更多信息:https://docs.npmjs.com/misc/scripts
我对 webpack 的工作方式有些困惑。如果您 运行 npm install examplePackage
在您的根目录中,是否会将软件包安装到您的硬盘驱动器?那么这是否意味着您可以随时在任何文件中导入该包?这与 运行 在您的项目中使用 npm install examplePackage
有何不同?是因为当你将你的项目推送到 Github 时,会有一个 package.json 供其他人关注并确保他们也有 运行 你的应用程序所需的库吗?节点如何知道要在您的项目中搜索包还是在您的硬盘中搜索?它是否只是先检查您的图书馆,然后如果没有找到它,它会在您的硬盘中查找?
npm install examplePackage
将在当前目录的 node_modules
中安装软件包。当您使用 require('examplePackage')
在 Node.js 中导入模块时,它首先检查它是否是核心模块(例如 fs). If it isn't a core module it starts looking in node_modules
of the current directory. If the module is not found in that directory, it moves to the parent directory and checks its node_modules
directory. And so on until the module was found or the root of the file system is reached. See https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders
这确实意味着您可以从文件系统的任何位置导入已安装在 /
中的软件包。尽管可以只安装 /
中的所有依赖项,但拥有项目特定的依赖项有很多优点。可能最大的优势是您可以轻松地与他人分享您的项目,并且您可以确定它会为他们工作(假设兼容 Node.js 版本)。
How does node know to search thru either your project for a package or your hard drive?
它只在您的硬盘上查找,特别是在上面提到的 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
node_modules/.bin
中提供了命令行工具或通常带有可执行文件的软件包,例如 webpack,为了执行它们,它们必须在您的 shell 中 [=28] =] 或直接调用。因为项目调用本地安装的可执行文件是很常见的,所以您可以在 package.json
的 scripts
部分使用它们,而无需在它们前面加上 node_modules/.bin
。例如 运行 webpack 你可以定义一个脚本:
"scripts": {
"build": "webpack"
}
然后 运行 npm run build
而不是 运行 ./node_modules/.bin/webpack
。有关脚本的更多信息:https://docs.npmjs.com/misc/scripts