2015-03-01 25 views
7

Với việc sử dụng các transpilers, bạn đã có thể sử dụng các mô-đun ES6. Một trong những cách dễ nhất là sử dụng Browserify và Babelify. Sự cố tôi gặp phải là cách xử lý quản lý phụ thuộc.Nhập mô đun ES6 và quản lý phụ thuộc

Trong những ngày cũ, bạn chỉ có một số phụ thuộc Bower. Bản dựng sẽ gói không phải CDN thành vendor.js và chiếu các tệp cụ thể vào foobar.js (hoặc bất kỳ thứ gì). Vì vậy, bạn có thể sử dụng mã kết quả trong một dự án khác chỉ đơn giản là bower install foobar --save. Nếu cả hai foobar và dự án mới của bạn có sự phụ thuộc chung, nó sẽ dễ dàng được giải quyết với sự phụ thuộc bằng phẳng của Bowers.

Bây giờ trong module ES6 đến: Nói rằng tôi có một dự án foo sử dụng lodash. Cấu trúc thư mục như sau:

src/js/foo.js src/vendor/lodash/dist/lodash.min.js

foo.js bắt đầu bằng cách tuyên bố:

import * as _ from '../../vendor/lodash/dist/lodash.min.js';

hoặc (như Browserify muốn từ transpiles Babelify để CommonJS):

import * as _ from './../../vendor/lodash/dist/lodash.min.js';

Nếu bây giờ tôi làm tròn và xuất bản dự án foo của mình và bắt đầu một dự án mới thanh sử dụng foo đây sẽ là cấu trúc thư mục của tôi.

src/js/bar.js src/vendor/foo/dist/foo.js src/vendor/lodash/dist/lodash.min.js

Nhưng điều đó sẽ không làm việc kể từ khi con đường từ foo-lodash hiện đang bị phá vỡ (nếu tôi hiểu đúng Browserify dot-slash trong' ./blaat/file.js' là tương đối vào tệp đang được gọi).

Có cách nào để nhập mà không đưa ra bất kỳ giả định đường dẫn tệp nào không? không có

là một số cách để chỉ ra nhiều rễ nguồn? (ví dụ trong trường hợp trên src/js và src/vendor ... tốt, lý tưởng bạn chỉ muốn nêu rõ import * as _ from 'lodash';)

Tôi chỉ sử dụng Browserify với Babelify trên cli. Tôi có nên sử dụng một số transpiler khác?

Trả lời

Các vấn đề liên quan