编写 npm 包
创建新的 npm 包
mkdir my-package
cd my-package/
meteor npm init
最后一个命令创建一个package.json
文件并提示您输入包信息。您可以跳过除name
、version
和entry point
之外的所有内容。您可以使用默认的index.js
作为entry point
。在此文件中,您设置包的导出内容。
// my-package/index.js
exports.myPackageLog = function() {
console.log("logged from my-package");
};
现在包含此包的应用程序可以执行以下操作
import { myPackageLog } from 'my-package'
myPackageLog(); // > "logged from my-package"
在为您的 npm 包选择名称时,请务必遵循npm 指南。
包含在您的应用程序中
当您为您的应用程序开发新的 npm 包时,有两种方法可以将该包包含在您的应用程序中
- 在 node_modules 中:将包放置在应用程序的
node_modules/
目录中,并将包添加到源代码控制中。当您希望所有内容都位于单个存储库中时,请执行此操作。
cd my-app/node_modules/
mkdir my-package
cd my-package/
meteor npm init
git add -f ./ # or use a git submodule
- npm link:将包放置在应用程序目录之外的单独存储库中,并使用
npm link
。当您希望在多个应用程序中使用该包时,请执行此操作。
cd ~/
mkdir my-package
cd my-package/
meteor npm init
cd ~/my-app/
meteor npm link ~/my-package
其他开发人员也需要运行npm link
命令。
使用任一方法后,编辑my-app/package.json
的dependencies
属性,添加"my-package": "1.0.0"
(使用您在meteor npm init
期间选择的相同版本号)。
发布您的包
您可以通过将其发布到 npm 注册表与其他人共享您的包。虽然大多数包都是公开的,但您可以使用私有模块控制谁可以查看和使用您的包。
要公开发布,请按照这些说明操作。完成后,任何人都可以使用npm install --save your-package
将其包添加到他们的应用程序中。
如果您想在开发过程中共享包,我们建议使用上述方法而不是注册表。如果您使用注册表,则每次更改包时,都需要递增版本号、发布,然后在您的应用程序内运行npm update my-package
。
使用本地版本覆盖包
如果您需要修改包以执行已发布版本未执行的操作,则可以在计算机上编辑包的本地版本。
假设您想修改left-pad
npm 包。如果您还没有,请在您的应用程序目录中运行
meteor npm install --save left-pad
现在left-pad
包含在您的package.json
中,并且代码已下载到node_modules/left_pad/
。使用以下命令将新目录添加到源代码控制中:
git add -f node_modules/left_pad/
现在您可以编辑包、提交和推送,您的团队成员将获得您的包版本。为了确保您的包在npm update
期间不会被覆盖,请将package.json
中的默认脱字符号版本范围更改为精确版本。
之前
"left-pad": "^1.0.2",
之后
"left-pad": "1.0.2",
另一种方法是为包维护一个单独的存储库,并将package.json
版本号更改为 git URL 或 tarball,但每次编辑单独的存储库时,您都需要提交、推送和npm update left-pad
。