📅  最后修改于: 2020-12-08 05:27:06             🧑  作者: Mango
在本章中,我们将学习如何创建自己的流星包。
让我们在桌面上添加一个新文件夹,在其中创建软件包。我们将使用命令提示符窗口。
C:\Users\username\Desktop\meteorApp> mkdir packages
现在,我们可以在上面创建的文件夹中创建包。从命令提示符处运行以下命令。用户名是Meteor Developer用户名,而包名是包的名称。
C:\Users\username\Desktop\meteorApp\packages>meteor create --package username:package-name
为了能够将本地软件包添加到我们的应用程序,我们需要设置ENVIRONMENT VARIABLE ,该变量将告诉Meteor从本地文件夹加载软件包。右键单击计算机图标,然后选择属性/高级系统设置/环境变量/新建。
变量名称应为PACKAGE_DIRS。变量值应该是我们创建的文件夹的路径。在我们的例子中, C:\ Users \ username \ Desktop \ meteorApp \ packages 。
添加新的环境变量后,请不要忘记重新启动命令提示符。
现在,我们可以通过运行以下代码将软件包添加到我们的应用中:
C:\Users\username\Desktop\meteorApp>meteor add username:package-name
在我们创建的包中将找到以下四个文件。
流星提供tinytest包进行测试。首先,在命令提示符窗口中使用以下命令安装它。
C:\Users\username\Desktop\meteorApp>meteor add tinytest
如果打开package-name-test.js ,我们将看到默认的测试示例。我们将使用此示例测试应用程序。注意:开发流星包时最好编写我们自己的测试。
要测试软件包,让我们在命令提示符下运行此代码。
C:\Users\username\Desktop>meteor test-packages packages/package-name
我们将得到以下结果。
这是我们可以编写代码的文件。让我们为包创建一些简单的功能。我们的程序包将在控制台中记录一些文本。
myPackageFunction = function() {
console.log('This is simple package...');
}
这是我们可以在其中设置某些程序包配置的文件。我们稍后会再讲,但是现在我们需要导出myPackageFunction以便可以在我们的应用程序中使用它。我们需要在Package.onUse函数添加它。该文件将如下所示。
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()了。
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"
});