Я создал свою собственную библиотеку Vue.js npm, чтобы помочь мне с моими личными проектами.Все работает отлично, за исключением попытки импортировать Class
Я определил класс следующим образом:
import Vue from 'vue'
export default class Foo {
constructor () {
...
}
}
my npm packages.json:
"main": "./dist/my-custom-lib.common.js",
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build-bundle": "vue-cli-service build --target lib --name my-custom-lib ./index.js",
"test:unit": "vue-cli-service test:unit"
},
"files": [
"dist/my-custom-lib.common.js",
"src/components/*",
"src/controllers/*",
"src/mixins/*",
"src/utilities/*"
],
Для публикации я делаю yarn build-bundle
, за которым следует npm publish
.
Когда я пытаюсь импортировать его из моего другого проекта:
import { Foo } from '@username/my-custom-lib'
Я получаю следующую ошибку:
global-plugin.js?3d38:9 Uncaught TypeError: _username_my_custom_lib__WEBPACK_IMPORTED_MODULE_2__.Foo is not a constructor
Я могу использовать все другие компоненты функций / миксины / vue, но не этот класс.
РЕДАКТИРОВАТЬ: Вот частичное содержимое файла common.js
:
var foo_Foo =
/*#__PURE__*/
function () {
function Foo(router) {
_classCallCheck(this, Foo);
}
_createClass(Foo, [{
...source contents...
}]);
return Foo;
}();
/* concated harmony reexport foo */__webpack_require__.d(__webpack_exports__, "foo", function() { return foo_Foo; });
index.js
, который вызывается как часть yarn build-bundle
, содержит следующее:
import * as components from '@/components'
const VueComponents = {
install (Vue) {
for (const plugin in components) {
Vue.component(plugin, components[plugin])
}
}
}
export * from '@/mixins'
export * from '@/utilities'
export * from '@/controllers'
export default VueComponents
внутри @/controllers/index.js
:
import foo from './foo'
export {
foo
}