Meteor - Package.js



在本章中,我們將學習如何建立自己的 meteor 包。

建立包

讓我們在桌面上新增一個新資料夾,將在其中建立包。我們將使用命令提示符視窗。

C:\Users\username\Desktop\meteorApp> mkdir packages

現在,我們可以在上面建立的資料夾中建立包。從命令提示符執行以下命令。使用者名稱是 Meteor 開發人員使用者名稱,包名稱是包的名稱。

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

包檔案

在我們建立的包中將找到以下四個檔案。

  • package-name-test.js
  • package-name.js
  • package.js
  • README.md

測試包 (package-name-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

我們將得到以下結果。

Meteor Package Test

package.js 檔案

這是我們可以編寫程式碼的檔案。讓我們為我們的包建立一些簡單的功能。我們的包將在控制檯中記錄一些文字。

packages/package.js

myPackageFunction = function() {
   console.log('This is simple package...');
}

package-name.js 檔案

這是我們可以設定一些包配置的檔案。我們稍後會回到它,但現在我們需要匯出myPackageFunction以便我們可以在我們的應用程式中使用它。我們需要在Package.onUse函式內新增它。該檔案將如下所示。

packages/package-name.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()了。

packages/package.js

if(Meteor.isClient) {
   myPackageFunction();
}

控制檯將記錄我們包中的文字。

Meteor Package Log

為了更好地理解如何配置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"
});
廣告

© . All rights reserved.