- 流星教程
- 流星 - 主页
- 流星 - 概述
- Meteor - 环境设置
- Meteor - 首次应用
- 流星 - 模板
- 流星 - 收藏
- 流星 - 形式
- 流星 - 活动
- 流星 - 会话
- 流星 - 追踪器
- 流星 - 套餐
- Meteor - 核心 API
- 流星 - 检查
- 流星 - 烈焰
- Meteor - 计时器
- 流星-EJSON
- 流星 - HTTP
- 流星 - 电子邮件
- 流星 - 资产
- 流星 - 安全
- 流星 - 排序
- 流星 - 账户
- Meteor - 方法
- 流星-Package.js
- Meteor - 发布和订阅
- 流星 - 结构
- 流星 - 部署
- Meteor - 在移动设备上运行
- 流星 - 待办事项应用程序
- Meteor - 最佳实践
- 流星有用资源
- 流星 - 快速指南
- 流星 - 有用的资源
- 流星 - 讨论
流星-Package.js
在本章中,我们将学习如何创建自己的流星包。
创建包
让我们在桌面上添加一个新文件夹,将在其中创建包。我们将使用命令提示符窗口。
C:\Users\username\Desktop\meteorApp> mkdir packages
现在,我们可以在上面创建的文件夹中创建包。从命令提示符运行以下命令。Username是 Meteor 开发者用户名,package-name是包的名称。
C:\Users\username\Desktop\meteorApp\packages>meteor create --package username:package-name
添加包
为了能够将本地包添加到我们的应用程序中,我们需要设置环境变量来告诉 Meteor 从本地文件夹加载包。右键单击计算机图标,然后选择属性/高级系统设置/环境变量/新建。
变量名称应为PACKAGE_DIRS。变量值应该是我们创建的文件夹的路径。在我们的例子中,C:\Users\username\Desktop\meteorApp\packages。
添加新的环境变量后,不要忘记重新启动命令提示符。
我们现在可以通过运行以下代码将包添加到我们的应用程序中 -
C:\Users\username\Desktop\meteorApp>meteor add username:package-name
打包文件
在我们创建的包中将找到以下四个文件。
- 包名-test.js
- 包名.js
- 包.js
- 自述文件.md
测试包(包名-test.js)
Meteor 提供了tinytest包进行测试。让我们首先在命令提示符窗口中使用以下命令来安装它。
C:\Users\username\Desktop\meteorApp>meteor add tinytest
如果我们打开package-name-test.js,我们将看到默认的测试示例。我们将使用此示例来测试该应用程序。注意:在开发meteor包时最好编写我们自己的测试。
要测试该包,让我们在命令提示符中运行此代码。
C:\Users\username\Desktop>meteor test-packages packages/package-name
我们将得到以下结果。
package.js 文件
这是我们可以编写代码的文件。让我们为我们的包创建一些简单的功能。我们的包将在控制台中记录一些文本。
包/package.js
myPackageFunction = function() { console.log('This is simple package...'); }
包名.js 文件
这是我们可以设置一些包配置的文件。我们稍后会再讨论它,但现在我们需要导出myPackageFunction,以便我们可以在我们的应用程序中使用它。我们需要将其添加到Package.onUse函数中。该文件看起来像这样。
包/包名.js
Package.describe({ name: 'username:package-name', version: '0.0.1', // Brief, one-line summary of the package. summary: '', // URL to the Git repository containing the source code for this package. git: '', // By default, Meteor will default to using README.md for documentation. // To avoid submitting documentation, set this field to null. documentation: 'README.md' }); Package.onUse(function(api) { api.versionsFrom('1.2.1'); api.use('ecmascript'); api.addFiles('mypackage.js'); api.export('myPackageFunction'); // We are exporting the function we created above... }); Package.onTest(function(api) { api.use('ecmascript'); api.use('tinytest'); api.use('username:package-name'); api.addFiles('package-name-tests.js'); });
使用包
现在我们终于可以从meteorApp.js文件中调用myPackageFunction()了。
包/package.js
if(Meteor.isClient) { myPackageFunction(); }
控制台将记录我们包中的文本。
为了更好地理解如何配置package.js文件,我们将使用 Meteor 官方文档中的示例。
这是一个示例文件...
/* Information about this package */ Package.describe({ // Short two-sentence summary. summary: "What this does", // Version number. version: "1.0.0", // Optional. Default is package directory name. name: "username:package-name", // Optional github URL to your source repository. git: "https://github.com/something/something.git", }); /* This defines your actual package */ Package.onUse(function (api) { // If no version is specified for an 'api.use' dependency, use the // one defined in Meteor 0.9.0. api.versionsFrom('0.9.0'); // Use Underscore package, but only on the server. // Version not specified, so it will be as of Meteor 0.9.0. api.use('underscore', 'server'); // Use iron:router package, version 1.0.0 or newer. api.use('iron:router@1.0.0'); // Give users of this package access to the Templating package. api.imply('templating') // Export the object 'Email' to packages or apps that use this package. api.export('Email', 'server'); // Specify the source code for the package. api.addFiles('email.js', 'server'); }); /* This defines the tests for the package */ Package.onTest(function (api) { // Sets up a dependency on this package api.use('username:package-name'); // Allows you to use the 'tinytest' framework api.use('tinytest@1.0.0'); // Specify the source code for the package tests api.addFiles('email_tests.js', 'server'); }); /* This lets you use npm packages in your package*/ Npm.depends({ simplesmtp: "0.3.10", "stream-buffers": "0.2.5" });