📜  包未发布到 npm(不在 npm 注册表中) (1)

📅  最后修改于: 2023-12-03 14:50:26.111000             🧑  作者: Mango

包未发布到 npm(不在 npm 注册表中)

当我们在开发过程中需要使用一些外部库或框架时,通常会通过npm注册表下载相应的包,然后在项目中引用它。但在有些情况下,我们可能需要使用未在npm注册表中发布的包,这时我们该怎么办呢?

创建本地包

我们可以通过手动创建一个本地包(local package)来解决这个问题。具体步骤如下:

  1. 创建一个新的目录,用于存放我们的包。例如,我们创建了一个名为“my-package”的目录。

  2. 在“my-package”目录中创建一个package.json文件。在这个文件中,我们需要指定name和version的值,同时可以在dependencies中列出本包需要依赖的其他包。

{
  "name": "my-package",
  "version": "1.0.0",
  "dependencies": {
    "lodash": "^4.17.20"
  }
}
  1. 在“my-package”目录中编写我们的代码,并将其导出为一个模块。例如,我们编写了一个名为“myModule”的模块,它输出一个函数,这个函数返回一个字符串。
module.exports = function() {
  return "Hello, world!";
};
  1. 在“my-package”目录中运行npm pack命令,打包我们的包。这个命令会生成一个tarball文件(格式为“my-package-1.0.0.tgz”),我们可以将它复制到我们要使用这个包的项目中。
引用本地包

在我们想要使用本地包的项目中,我们可以通过以下方法引用它:

  1. 在项目目录中创建一个“packages”目录,用于存放我们的本地包。

  2. 将之前生成的“my-package-1.0.0.tgz”文件复制到“packages”目录中。

  3. 在项目目录中,运行npm install ../packages/my-package-1.0.0.tgz命令,安装我们的本地包。

  4. 在代码中通过require语句引用我们的本地包。

const myModule = require('my-package');
console.log(myModule()); // 输出“Hello, world!”

注意事项:

  • 在我们的本地包中,我们可以使用类似于@myscope/my-package的包名来避免与npm注册表中的包冲突。
  • 当我们需要更新本地包时,我们需要重新打包并复制tarball文件到项目目录中,并重新运行npm install命令。
  • 如果我们需要将本地包发布到npm注册表中,我们需要先在npm注册表中注册一个账号,并通过npm publish命令将我们的包发布到注册表中。
总结

通过手动创建本地包,我们可以轻松地使用未发布到npm注册表中的第三方库或框架。在实际开发中,我们可以将常用的工具函数或自己编写的功能模块打包成本地包,方便在多个项目中复用。