Mam małą aplikację EmberJS, która używa Ember-Cli. Moja aplikacja ma prywatną bibliotekę ES6, która jest zależna od typu bower. Zasadniczo, chcę zaimportować bibliotekę i używać jej tam, gdzie chcę.Użyj biblioteki ES6 w projekcie Ember-cli
Jeśli się nie mylę, powinienem przenieść bibliotekę do mojego brocfile.js
i użyć jej później. Niestety, nie mogę podać zbyt wielu konkretnych informacji, ale postaram się jak najlepiej być bardziej przejrzystym.
Moja biblioteka zewnętrzna nosi nazwę main-lib
i jest skonstruowany w następujący sposób (on pracuje w innym projekcie):
- bower_components
- main-lib
- api.js
- główne .js
- message.js
- main-lib
W pliku main.js, mam następujące:
import Api from 'main/api';
import Message from 'main/message';
var main = {};
main.api = Api;
main.message = Message;
export default main;
Więc, co chcę zrobić, jest w mojej aplikacji, aby importować main
i korzystać z różnych funkcji zawiera.
przykład w pewnym kontrolera emberjs:
import Main from 'main';
//use Main here
Aby to zrobić, myślałem o wykonanie następujących czynności w moich 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'
}
});
Jednak to nic nie robi. Zasadniczo chcę, aby pliki transpiled zostały uwzględnione w vendor.js
lub gdzieś, gdzie będę w stanie korzystać z biblioteki poprzez importowanie.
Jest coś, czego tu brakuje, ale nie mogę tego wskazać.
Edit1: Po dodaniu tych linii na końcu moich brocfile.js:
mergeTrees = require('broccoli-merge-trees')
module.exports = mergeTrees([app.toTree(), amdFiles]);
mogę dostać ES5, który wygląda tak:
define(['main/api', 'main/message'], function(api, message) {
var main = {};
main.api = Api;
main.message = Message;
var _main = main;
return _main;
});
Problem polega na tym, że to nie importuje również main/api
i main/message
. Czy muszę powtarzać kod dla każdego pliku, który chcę?
Również plik nie jest łączony w vendor.js
ale po prostu, ale u podstaw /dist
Hierarchia wygląda następująco: main-lib/(main.js | api.js | message.js) Czy powinienem po prostu mieć 'import api'? – etiennenoel
Spodziewam się, że "importowanie Api z" ./api '"będzie działało tak, jak w Ember. – jmurphyau
Dlaczego jest to zaakceptowana odpowiedź, ma raczej kształt komentarza niż odpowiedzi. Generalnie używam drzewa łączenia do importowania całego kodu, jednak jest łatwiejsza opcja teraz: https://www.npmjs.com/package/broccoli-es6modules – jonathanKingston