如何将非NPM依赖项添加到package.json文件中
npm生态系统的一个重要功能是能够从npm注册表中安装和管理软件包。这些依赖项会列在项目的package.json文件的”dependencies”部分中。然而,有时您可能需要使用一个不可通过npm获取的依赖项,比如您自己创建的库,或者还没有发布到npm的库。在这种情况下,您可以将非NPM依赖项添加到package.json文件中。本文将讨论如何添加非NPM依赖项到您的package.json文件中。
特点:
- 非NPM依赖项可以是任何不可通过npm获取的库或模块,比如本地库或私有仓库。
- 将非NPM依赖项添加到package.json的过程类似于添加常规NPM依赖项。
- 一旦添加,非NPM依赖项可以像常规NPM依赖项一样被导入和使用。
语法: 要将非NPM依赖项添加到package.json中,您可以使用以下语法:
"dependency-name": "file:path/to/dependency"
“dependency-name”可以是您选择的任何名称,“path/to/dependency”应该是依赖的源代码文件路径。这可以是绝对路径或相对于package.json文件的路径。
注意: 要运行该项目,请记住在终端中输入以下内容以使用这些依赖项:
npm install .
有几种不同的方法可以做到这一点,这取决于您要包含的依赖项的类型。以下是向package.json文件中添加每种非npm依赖项的步骤:
示例1:Git存储库: 如果您想包含托管在git存储库中的依赖项,您可以在package.json文件中使用git +协议,如下所示:
"dependencies": {
"my-git-dependency": "git+https://github.com/user/my-git-dependency.git"
}
例如,让我们创建一个使用 GitHub 上的 hashmap 库的项目,该库允许使用任何数据类型作为 hashmap 对象的键。 package.json
{
"name": "gfg-nj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"hashmap" : "https://github.com/flesler/hashmap.git"
},
"author": "",
"license": "ISC"
}
index.js: The index.js 可以按照以下方式创建。
// use the hashmap library added as dependency
const HashMap = require('hashmap');
// Creating a new HashMap
let map = new HashMap();
// Adding key value pairs
map[1] = "one";
map[[2, 3]] = "two";
map[[2, 3]] += "three";
map[3.2] = "three point two";
// Displaying the map
console.log(map)
输出:
这将允许您在项目中要求git存储库使用与任何其他npm包相同的语法。
示例2:本地文件: 如果您想在项目中使用本地文件作为依赖项,可以使用文件协议将其添加到package.json文件中。以下是语法:
"dependencies": {
"my-local-dependency": "file:../my-local-dependency"
}
这将允许您使用以下语法在您的项目中要求本地文件:
const myLocalDependency = require('my-local-dependency');
module.js
// This file provides a definition for the sum method
function sum(a, b) {
return a + b;
}
要将此文件用作依赖项,可以更新package.json文件为:
{
"name": "gfg-nj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"sum-module" : "file:C:\\Users\\phala\\Desktop\\GFG-NJ\\module.js"
},
"author": "",
"license": "ISC"
}
为了测试这个模块,可以创建一个 index.js 文件,内容如下:
// Load the module.js file
const sums = require('./module');
// Displaying the result of the sum method
console.log(sums.sum(1, 2));
输出:
更新依赖: 一旦您在package.json文件中添加了非npm依赖项,可以使用npm install命令进行安装。这将在项目的node_modules目录中下载并安装依赖项。如果您需要将依赖更新到新版本,则可以使用npm update命令。这将更新依赖项到package.json文件中指定的最新版本。
优点:
- 在还没有或永远不会发布到npm的情况下,可以使用非npm依赖项。对于使用内部或私有库的项目,这可能很有用。
- 可使用依赖项的特定版本或提交,该版本在npm中不可用。
缺点:
- 非npm依赖项可能在项目的开发和维护中带来困难,因为它们与npm软件包的流程不同。
- 管理这些依赖项的版本和更新可能更加困难。
- 可能更难找到这些依赖项的文档或支持。
应用:
- 使用内部或私有库。
- 使用npm中不可用的特定版本库。
- 使用永远不会在npm中可用的库。
- 使用尚未准备好供一般使用的预发布版本的软件包。
将非npm依赖项添加到您的package.json文件中可以是一种有用的方式,用于包含通过npm不可获得的库或模块。虽然此过程类似于添加常规npm依赖项,但需要注意非npm依赖项可能会带来额外的维护和管理挑战。在决定在项目中使用非npm依赖项时,应仔细考虑优点和缺点。一般来说,最好仅在必要时使用非npm依赖项,例如在使用内部或私有库或使用npm中不可用的特定版本库的情况下。