2012-04-11 16 views
41

कोई Meteor smart package कैसे बना सकता है जो meteor list में दिखाई देगा?एक उल्का स्मार्ट पैकेज कैसे बनाएं

Atmosphere संकुल का निर्माण काफी अच्छा documented है, लेकिन इमारत उल्का संकुल नहीं है।

+0

अधिसूचना के लिए tks - अद्यतन –

उत्तर

20

उल्का अब create --package कमांड का समर्थन करता है।

the meteor docs देखें।

उदाहरण (स्थानापन्न अपनी खुद की meteor developer account "cunneen" के लिए):

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'); 
}); 

संकुल/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); 
}); 

संकुल/cunneen: foo/README.md (खाली फ़ाइल)

# cunneen:foo package 

एक अच्छा (बहुत व्यापक) उदाहरण के लिए, iron-router पर एक नज़र डालें।

+1

'mrt create-package' पुराना प्रतीत होता है। 'उल्का बनाने का उपयोग करें - पैकेज पैकेज-नाम ' –

+0

धन्यवाद @ जोनाथन अज़ुले, मैंने इसे अपडेट किया है। – cobberboy

13

नोट: पैकेज विकास वर्तमान में अनियंत्रित है, और एपीआई बदल जाएगा। आपको चेतावनी दी गई थी!

कहा, यह वास्तव में बहुत आरंभ करने के लिए आसान है:

पहले, Git उल्का रेपो की एक प्रति क्लोन। खुद को/पैकेज में एक नई निर्देशिका बनाओ। निर्देशिका में एक पैकेज.जेएस फ़ाइल डालें (उदाहरण के लिए अन्य संकुल देखें)। अब आपके पास एक पैकेज है!

अगला, अपने चेकआउट से उल्का स्क्रिप्ट चलाएं (इंस्टॉलर द्वारा इंस्टॉल नहीं किया गया)। जब चेकआउट से चलाने के लिए, स्क्रिप्ट चेकआउट में स्थानीय संकुल निर्देशिका का उपयोग करेगा। जब आप अपने पैकेज में कोड बदलते हैं तो यह हॉट-रीलोड भी होगा।

उदाहरणों के लिए अन्य पैकेजों को देखें और एपीआई क्या करता है, यह जानने के लिए।

संपादित करें: बहुत प्रगति तीसरे पक्ष के संकुल के संदर्भ में किया गया है। http://oortcloud.github.com/meteorite/ और https://atmosphere.meteor.com/

+0

यह उपकरण की तरह एनपीएम होना बहुत अच्छा होगा;) मैं अपने मीटरी परियोजना में http://momentjs.com/ आयात करने का एक तरीका ढूंढ रहा हूं। इस लाइब्रेरी क्लाइंट/सर्वर की ओर पहुंचने का सबसे अच्छा समाधान क्या है? आपके अद्भुत काम के लिए धन्यवाद! – LarZuK

+0

कमाल !! app_root/lib/moment.js और ... वह बैठे हैं ?? बस ... अद्भुत ... मुझे डॉक्टर में नहीं मिला, नहीं? – LarZuK

+1

@ n1mmy मैंने जिथब से रेपो को क्लोन किया, क्लोन 'उल्का' फ़ोल्डर में गया, एक कस्टम jQuery निर्माण डाउनलोड किया और परिणामी जेएस फ़ाइल को 'पैकेज' के अंदर एक नए सबफ़ोल्डर में रखा। मैंने मौजूदा 'jquery'package से' package.js' फ़ाइल को कॉपी/पेस्ट किया है और अपनी कस्टम 'jquery'build के नाम को प्रतिबिंबित करने के लिए इसकी सामग्री संपादित की है। इसके बाद मैं अपने क्लोन 'उल्का' फ़ोल्डर की जड़ तक गया और '/ meteor' चला गया और मुझे dev_bundle में 'स्थापित निर्भरता किट v0.1.4 मिला।' अब तक सब ठीक है। लेकिन 'उल्का सूची' चलाना मेरा नया पैकेज नहीं दिखाता है। विचार? – Webdevotion

6

यह जुन 12 2013 दिनांकित था की जाँच करें यह समय पर सही जवाब था, और अभी भी कोई वैकल्पिक समाधान है:

तरह n1mmy कहा। यह अनियंत्रित है, और आपको उल्का का उपयोग करना चाहिए।

यदि आप उल्का के साथ एक पैकेज बनाने पर जोर देते हैं, तो मुझे एक अच्छा अनौपचारिक तरीका मिला, लेकिन आपको वास्तव में ऐसा नहीं करना चाहिए। उल्का आगामी रिलीज़ में संकुल बनाने के लिए एक तरह से साथ बाहर आ जाएगी।

एक उल्का पैकेज Bulding: https://coderwall.com/p/ork35q

तरह से मैं क्या करना होगा यह उल्का

जाहिर है आप नोड है, और मुझे लगता है आप नोड पैकेज प्रबंधक (NPM) है, इसलिए अपने सबसे अच्छे के साथ है तारीख करने के लिए एक उल्का पैकेज बनाने के लिए जिस तरह से, एक उल्का स्मार्ट पैकेज बनाना है। ~/.meteorite/
: - package.js - smart.json

उल्का फ़ाइलें आपके सिस्टम उपयोगकर्ता खाते में लॉग इन के तहत जमा हो जाती है

npm install meteorite 

उल्का स्मार्ट पैकेज पैकेज निर्माण के लिए आवश्यक 2 कुंजी फ़ाइलें हो लेकिन अपने वर्तमान जहां एक उल्का एप्लिकेशन बनाया सांकेतिक रूप से लिंक: परियोजना/.meteor/उल्का/

नमूना package.js:

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

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

नमूना स्मार्ट।json

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

आप अब और जानकारी की आवश्यकता है, तो आप सूची में से एक एमआरटी पैकेज स्थापित करना चाहिए:

mrt list 

और फिर अपने ऐप/.meteor/उल्का/निर्देशिका के अंतर्गत फ़ाइलें का विश्लेषण।

उम्मीद है कि यह मदद करता है, और भविष्य की सर्वोत्तम भाषा विकसित करना जारी रखता है।

यहाँ कुछ उपयोगी लिंक कर रहे हैं:

+0

'mrt list' वास्तव में 'mete' के माध्यम से 'list' कमांड को पास करता है, इसलिए आपको स्मार्ट पैकेज मिलेंगे, न कि" mrt packages "(यानी वायुमंडल पर) –

6

वहाँ इस विषय पर एक अच्छा स्क्रीनकास्ट है समझा ट्यूटोरियलपर 210।

14

cobberboy के देखें answer below

नीचे पुरानी जानकारी है: https://meteorhacks.com/meteor-weekly-meteor-09-rc-meteor-new-logo-underscore-in-templates.html

** पुराने जानकारी **

वहाँ:

नई उल्का पैकेजिंग प्रणाली की जानकारी देखेंके बारे में जानकारी अपडेट की गई हैऔर लगभग repackaging existing 3rd party libraries। एपीआई 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.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'] 
}); 

उल्का एप्लिकेशन /package.js: उचित क्लाइंट/सर्वर के संदर्भ में कुछ फ़ाइल (जैसा कि package.js में परिभाषित किया गया है)

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

उल्का एप्लिकेशन: smart.json, यह पैकेज .. वाह स्थापित करने के लिए प्राप्त करने के लिए कमांड लाइन पर रन mrt install संकुल सूची

{ 
    packages:{ 
     "node-my": { 
      "git": "[email protected]:myAccount/node-my.git" 
     } 
    } 
} 

अंत में अपनी फ़ाइल को जोड़ने!

+1

को' mrt add node-my' ' 'mrt' – zhaoyou

+0

मुझे संदर्भित लिंक पर पैकेज बनाने का स्पष्ट दस्तावेज़ीकरण नहीं दिखाई देता है। क्या कहीं ऐसा करने के मौजूदा तरीके के लिए कोई अच्छा संदर्भ है? –

+2

नीचे @cobberboy द्वारा उत्तर देखें। ओपी कृपया cobberboy द्वारा स्वीकृत उत्तर को बदलें। –

संबंधित मुद्दे