Ho una piccola applicazione EmberJS che utilizza Ember-Cli. La mia applicazione ha una libreria ES6 privata che è una dipendenza bower. Fondamentalmente, quello che voglio è importare la libreria e usarla dove voglio.Utilizzare la libreria ES6 nel progetto Ember-cli
Se non sbaglio, dovrei traspondere la libreria nel mio brocfile.js
e usarla in seguito. Sfortunatamente, non posso fornire troppe informazioni concrete, ma farò del mio meglio per essere il più chiaro possibile.
La mia libreria esterna si chiama main-lib
ed è strutturato nel modo seguente (si sta lavorando in un altro progetto):
- bower_components
- main-lib
- api.js
- principali .js
- message.js
- main-lib
Nel file main.js, ho il seguente:
import Api from 'main/api';
import Message from 'main/message';
var main = {};
main.api = Api;
main.message = Message;
export default main;
Quindi, quello che voglio fare, è, nella mia richiesta, per importare main
e utilizzare le diverse funzioni contiene.
esempio, in un certo controllo emberjs:
import Main from 'main';
//use Main here
Per farlo, ho pensato di fare quanto segue nei miei brocfile.js
var tree = 'bower_components/main-lib';
var ES6Modules = require('broccoli-es6modules');
var amdFiles = new ES6Modules(tree, {
format: 'amd',
bundleOptions: {
entry: 'main.js',
name: 'mainLib'
}
});
Tuttavia, questo non fa nulla. Fondamentalmente, voglio che i file transpiled siano inclusi in vendor.js
o da qualche parte dove sarei in grado di usare la libreria importandola.
C'è qualcosa che mi manca qui ma non riesco a individuarlo.
Edit1: Dopo aver aggiunto queste righe alla fine dei miei brocfile.js:
mergeTrees = require('broccoli-merge-trees')
module.exports = mergeTrees([app.toTree(), amdFiles]);
posso ottenere un ES5 che assomiglia a questo:
define(['main/api', 'main/message'], function(api, message) {
var main = {};
main.api = Api;
main.message = Message;
var _main = main;
return _main;
});
Il problema è che si non importa main/api
e main/message
pure. Devo ripetere il codice per ogni file che voglio?
Inoltre, il file non viene concatenato in vendor.js
ma semplicemente ma alla radice di /dist
La gerarchia è la seguente: main-lib/(main.js | api.js | message.js) Devo solo importare api? – etiennenoel
Mi aspetterei che "importare Api da './api'" funzioni come in Ember. – jmurphyau
Perché questa è la risposta accettata, è più simile a un commento che a una risposta. Generalmente uso l'albero di merge per importare tutto il codice, tuttavia ora c'è un'opzione più semplice: https://www.npmjs.com/package/broccoli-es6modules – jonathanKingston