Tôi đang làm việc trên một dự án có chứa một mô-đun Vuex và một thành phần trừu tượng mà người dùng có thể mở rộng.Cách xuất bản thư viện thành phần Vue.js?
Tôi rất muốn xuất bản điều này trên NPM để dọn sạch mã nguồn của tôi và kéo nó ra khỏi dự án của tôi như một mô-đun được thử nghiệm tốt. Tôi đã xác định các tập tin chính trong package.json
để nạp một chỉ số mà nhập khẩu tất cả mọi thứ tôi muốn để lộ:
https://github.com/stephan-v/vue-search-filters/
Chỉ số chứa này vào lúc này:
import AbstractFilter from './src/components/filters/abstract/AbstractFilter.vue';
import Search from './src/store/modules/search';
module.exports = {
AbstractFilter,
Search
};
Để làm việc này tôi cần để transpile này kể từ khi một trình biên dịch babel thường sẽ không transpile các tập tin được nhập khẩu từ node_modules (đúng tôi nếu tôi sai ở đây). Bên cạnh đó tôi có lẽ sẽ là một ý tưởng tốt để làm điều này để nó có thể được sử dụng bởi các hệ thống khác nhau.
Làm cách nào để chỉ transpile các tệp mà tôi cần bằng Webpack? Tôi có phải tạo một cấu hình riêng cho việc này không?
Cấu hình trông như thế nào? Tôi biết các vue-cli có một lệnh build
cho một thành phần tập tin duy nhất nhưng điều này là một chút khác nhau.
Bất kỳ mẹo hoặc đề xuất nào về cách chuyển tải một cái gì đó như thế này đều được chào đón.
Sửa
Điều này có vẻ giống như một sự khởi đầu tốt cũng như:
https://github.com/Akryum/vue-share-components
Điều nhập khẩu nhất cho người dùng Webpack cần ghi nhận là bạn cần phải transpile tập tin của bạn trong UMD mà có thể được đặt bởi:
libraryTarget: 'umd'
Điều này sẽ đảm bảo bạn đang chuyển đổi cho Universal Module Definition
, có nghĩa là mã của bạn sẽ làm việc trong các môi trường khác nhau như AMD, CommonJS, như một thẻ script đơn giản vv
Bên cạnh đó nó là nhập khẩu để cung cấp các externals trong webpack:
externals: {}
đây bạn có thể xác định thư viện người dùng dự án của bạn nhưng không nên được tích hợp vào tệp dist
của bạn. Ví dụ bạn không muốn thư viện Vue được biên dịch/chuyển thành nguồn của gói NPM của bạn.
Tôi sẽ nghiên cứu thêm một chút, cho đến nay các tùy chọn tốt nhất có vẻ như tự tạo dự án tùy chỉnh Nếu tôi muốn kiểm tra tính linh hoạt và đơn vị.
docs Webpack
Đây cũng là một trang hữu ích mà đi sâu về làm thế nào để xuất bản một cái gì đó với Webpack:
https://webpack.js.org/guides/author-libraries/#add-librarytarget
Cảm ơn điều này trông giống như một khởi đầu rất tốt và có lẽ những gì tôi đang tìm kiếm. Tôi sẽ kiểm tra nó ra tối nay và cho bạn biết nếu nó trả lời câu hỏi của tôi. –
Chỉ tò mò thôi, bạn đã tự tạo cấu hình webpack cho dự án này hay bạn đã lấy các phần từ một dự án khác cũng xây dựng cho 'umd'? –
Ngoài ra, làm thế nào để bạn phát triển với dự án này? Không có người xem và không nhập Vue.js. Có vẻ như bạn chỉ có thể phát triển bằng cách gắn kết toàn bộ dự án này với một repo thực sự nhập Vue làm thế nào để bạn đối phó với điều này? Tôi tốt nhất nên có một dự án hoàn toàn độc lập để tôi có thể chạy thử nghiệm đơn vị, kiểm tra e2e, v.v. –