42

に表示されるMeteor スマート パッケージをどのように構築できmeteor listますか?

Atmosphereパッケージのビルドは十分に文書化されていますが、Meteor パッケージのビルドはそうではありません。

4

5 に答える 5

21

create --packageMeteor がコマンドをサポートするようになりました。

流星のドキュメントを参照してください。

例 ( 「cunneen」を自分のmeteor 開発者アカウントに置き換えます):

meteor create --package cunneen:foo

出力:

cunneen:foo: created in your app

結果:

パッケージ/cunneen:foo/package.js

Package.describe({
  name: 'cunneen:foo',
  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.0.3.1');
  api.addFiles('cunneen:foo.js');
});

Package.onTest(function(api) {
  api.use('tinytest');
  api.use('cunneen:foo');
  api.addFiles('cunneen:foo-tests.js');
});

packages/cunneen:foo/foo.js (空ファイル)

// Write your package code here!

パッケージ/cunneen:foo/foo-tests.js

// Write your tests here!
// Here is an example.
Tinytest.add('example', function (test) {
  test.equal(true, true);
});

packages/cunneen:foo/README.md (空ファイル)

# cunneen:foo package

良い (非常に包括的な) 例として、iron-routerを見てください。

于 2014-05-30T08:33:09.633 に答える
14

以下のコバーボーイの答えを参照してください

以下は古い情報です。

新しい流星パッケージング システム に関する情報を参照してください: https://meteorhacks.com/meteor-weekly-meteor-09-rc-meteor-new-logo-underscore-in-templates.html

** 古い情報 **

独自のパッケージの作成および既存のサードパーティ ライブラリの再パッケージ化に関する更新情報があります。ただし、API は 1.0 まで安定していないため、多くの変更を加える準備をしてください。

一度にノードと隕石の両方を使用できるライブラリにするのに役立つ定型文を含めました。これを理解するのにかなりの時間がかかり、提案を受け入れました。

パッケージ: /lib/my.js

if (typeof Meteor === 'undefined) {
    // Not Running In Meteor (nodejs code)
    // example NPM/Node Dependencies that we'll use
    var async = require('async');
    var debug = require('debug')('my:package');
    var mongodb = require('mongodb');

    var http = require('http');  
} else {
    // Running as Meteor Package
    var async = Npm.require('async');
    var debug = Npm.require('debug')('my:package');
    var mongodb = Npm.require('mongodb');

    // node core module 'http'
    // use Npm.require to require node core modules
    // but doesnt need Npm.depends in the package.js file
    var http = Npm.require('http');
}

var constructor = function(property1) {
    this.property1 = property1; // or whatever in your constructor.
};

if (typeof Meteor === 'undefined') {
   // Export it node style
   My = exports = module.exports = constructor; // Limit scope to this nodejs file
} else {
   // Export it meteor style
   My = constructor; // Make it a global
}

// Proceed defining methods / properties as usual.
My.prototype.doStuff = function() { console.log('hello world'); }

パッケージ: /package.js

Package.describe({
  summary: "My Meteor Package"
});

/**
 * Ex: Some NPM Dependencies
 */
Npm.depends({
  'async': '0.2.9',
  'debug': '0.7.2',
  'mongodb': '1.3.18'
});

/**
 * On use we'll add files and export our tool
 */
Package.on_use(function (api) {
  /**
   * Add all the files, in the order of their dependence (eg, if A.js depends on B.js, B.js must be before A.js)
   */
  api.add_files([
    'lib/my.js' // <-- include all the necessary files in the package
    ],
    'server'); // Can be 'server', 'client' , ['client','server']

  /**
   * Only expose the My constructor, only export if meteor > 0.6.5
   */
  api.export && api.export(['My'], 'server'); // 1st arg can be array of exported constructors/objects, 2nd can be 'server', 'client', ['client', 'server']
});

meteor アプリ: 適切なクライアント/サーバー コンテキスト内のファイル (package.js で定義)

var my = new My('a property');
my.doStuff(); // console logs 'hello world' on the server

meteor アプリ: smart.json 、ファイルをパッケージ リストに追加します。

{
    packages:{
        "node-my": {
            "git": "git@github.com:myAccount/node-my.git"
        }
    }
}

最後mrt installにコマンド ラインで実行して、パッケージをインストールします。

于 2013-08-15T19:02:04.480 に答える
13

注:パッケージ開発は現在文書化されておらず、APIは変更されます。あなたは警告されました!

そうは言っても、実際に始めるのはかなり簡単です。

まず、gitクローンで流星リポジトリのコピーを作成します。/packagesに新しいディレクトリを作成します。package.jsファイルをディレクトリに配置します(例については、他のパッケージを参照してください)。これでパッケージができました!

次に、チェックアウトからmeteorスクリプトを実行します(インストーラーによってインストールされたものではありません)。チェックアウトから実行する場合、スクリプトはチェックアウトのローカルパッケージディレクトリを使用します。パッケージ内のコードを変更すると、ホットリロードも行われます。

他のパッケージで例を確認し、APIの機能を理解してください。

編集:サードパーティのパッケージに関しては多くの進歩がありました。http://oortcloud.github.com/meteorite/https://atmosphere.meteor.com/をチェックしてください

于 2012-04-11T22:52:02.167 に答える
6

EventedMindには、このトピックに関する優れたスクリーンキャストがあります。

于 2013-07-10T21:33:26.117 に答える
6

これは 2013 年 6 月 12 日の日付でした。これは当時の正解であり、現在でも代替ソリューションです。

n1mmyが言ったように。文書化されていないため、隕石を使用する必要があります。

meteor を使用してパッケージを作成することに固執する場合は、非公式の適切な How-to を見つけましたが、実際にこれを行うべきではありません。Meteor は、次のリリースでパッケージを作成する方法を発表する予定です。

Meteor パッケージのビルド: https://coderwall.com/p/ork35q

私がそれを行う方法は、隕石を使用することです

明らかにノードがあり、ノード パッケージ マネージャー (npm) を持っていると仮定します。そのため、現在までに流星パッケージを作成する最善の方法は、隕石スマート パッケージを作成することです。

npm install meteorite

Meteorite スマート パッケージには、パッケージの作成に不可欠な 2 つの主要なファイル (package.js - smart.json) が含まれています。

Meteorite ファイルは、システムにログインしたユーザー アカウント: ~/.meteorite/ に保存されます
が、現在 meteor アプリを作成した場所: project/.meteor/meteorite/ にシンボリック リンクされています。

サンプル package.js:

Package.describe({
   summary: "User analytics suite for meteor"
});

Package.on_use(function (api) {
   api.add_files('user_analytics.js', 'client');
});

サンプル smart.json

{
   "name": "User analytics",
   "description": "User Analytics",
   "homepage": "http://yourHomepage.com",
   "author": "Eric Leroy",
   "version": "0.1",
   "git": "https://github.com/yipyo",
   "packages" : {}
}

さらに情報が必要な場合は、リストから mrt パッケージをインストールする必要があります。

mrt list

app/.meteor/meteorite/ ディレクトリの下のファイルを分析します。

これが役立つことを願って、将来の最高の言語を開発し続けてください.

役立つリンクを次に示します。

于 2013-05-28T08:23:34.080 に答える