どのようにしてmeteor list
に表示される Meteor smart package を構築できますか?
Atmosphere パッケージのビルドはかなりうまくいきます documented ですが、Meteorパッケージのビルドはそうではありません。
Meteorはcreate --package
コマンドをサポートするようになりました。
meteor docs を参照してください。
例(独自の 流星開発者アカウント を「cunneen」に置き換えます):
meteor create --package cunneen:foo
出力:
cunneen:foo: created in your app
結果:
packages/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!
packages/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 を見てください。
Cobberboyの 下の回答 を参照してください
以下は古い情報です:
new流星のパッケージシステムに関する情報を参照してください: 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 app:適切なクライアント/サーバーコンテキスト内のファイル(package.jsで定義されている)
var my = new My('a property');
my.doStuff(); // console logs 'hello world' on the server
meteor app:smart.json、ファイルをパッケージリストに追加します
{
packages:{
"node-my": {
"git": "[email protected]:myAccount/node-my.git"
}
}
}
最後に実行mrt install
コマンドラインでパッケージをインストールしてください..Whew!
注:パッケージの開発は現在文書化されておらず、APIが変更されます。警告されました!
とはいえ、実際に始めるのは非常に簡単です。
最初に、gitでmeteorリポジトリのコピーを作成します。/packagesに新しいディレクトリを作成します。 package.jsファイルをディレクトリに配置します(例については、他のパッケージを参照してください)。これでパッケージが手に入りました!
次に、チェックアウトから流星スクリプトを実行します(インストーラーによってインストールされたスクリプトではありません)。チェックアウトから実行すると、スクリプトはチェックアウトのローカルパッケージディレクトリを使用します。パッケージのコードを変更した場合でも、ホットリロードされます。
他のパッケージの例を確認し、APIの機能を理解してください。
編集:サードパーティのパッケージに関して多くの進歩がありました。 http://oortcloud.github.com/meteorite/ と https://atmosphere.meteor.com/ を確認してください。
これは2013年6月12日付でした。それは当時は正解であり、まだ代替ソリューションです。
N1mmyが言ったように。文書化されていないため、隕石を使用する必要があります。
流星でパッケージを作成することを主張する場合、私は良い非公式のハウツーを見つけましたが、実際にはこれを行うべきではありません。 Meteorは、次のリリースでパッケージを作成する方法を発表します。
Meteorパッケージの構築: https://coderwall.com/p/ork35q
Meteoriteを使用する方法
明らかにノードがあり、ノードパッケージマネージャー(npm)があることを前提としているため、これまでの隕石パッケージを作成する最善の方法は、隕石スマートパッケージを作成することです。
npm install meteorite
Meteoriteスマートパッケージには、パッケージの作成に不可欠な2つの主要ファイル-package.js-smart.jsonが含まれています
隕石ファイルは、システムにログインしているユーザーアカウントに保存されます:〜/ .meteorite /
しかし、流星アプリを作成した現在の場所にシンボリックリンクされています: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 /ディレクトリの下のファイルを分析します。
これがお役に立てば幸いです。そして将来の最良の言語を開発し続けてください。
ここにいくつかの役立つリンクがあります:
EventedMind のこのトピックに関する優れたスクリーンキャストがあります。