Почему мой ES6 имеет разные экспорты (export || exports.default + named) в зависимости от объема импорта?
У меня есть это в сценарии yargs:
const pkg = require(join(argv.path, 'package.json'));
const exported = require(join(argv.path, pkg.main));
console.log(exported);
Если я попытаюсь прочитать этот источник в пакете сценария yargs pkg.main
:
import SiteService, { SiteFunction } from 'site-service';
export const siteService = new SiteService('management', {
id: 1000,
othersIds: 1000,
});
export const siteFunction = new SiteFunction(siteService, {
id: 1000,
othersIds: 1000,
});
export default siteService;
Значение экспортируется:
{ siteService:
SiteService {
name: 'management',
config: { id: 1000, othersIds: 1000 },
siteFunctionList: [] },
siteFunction:
SiteFunction {
siteService:
SiteService {
name: 'management',
config: [Object],
siteFunctionList: [] },
config: { id: 1000, othersIds: 1000 } },
default:
SiteService {
name: 'management',
config: { id: 1000, othersIds: 1000 },
siteFunctionList: [] } }
Если я прочитал pkg.main
другого модуля с этим содержанием:
import React from 'react';
import Resource from 'ra-core/lib/Resource';
import Route from 'react-router-dom/Route';
import SiteService, { SiteFunction } from 'site-service';
const siteService = new SiteService('management', {
id: 1000,
otherIds: [1, 2],
});
import {
UsersList,
UsersCreate,
UsersEdit,
UsersShow,
} from './resources/users';
export const siteFunction = new SiteFunction(siteService, ({ pages, roles, permissions }) => [
<Resource
name="users"
list={UsersList}
edit={UsersEdit}
create={UsersCreate}
show={UsersShow}
/>,
], ({ pages, roles }) => [
], ({ pages, roles }) => [
{
name: 'management',
redirect: true,
from: '/management',
to: '/',
description: 'management',
},
]);
export default siteFunction;
У меня есть следующий вывод
SiteFunction {
siteService:
SiteService {
name: 'management',
config: { id: 1000, otherIds: [Array] },
siteFunctionList: [] },
config: [Function] }
Конфигурация проекта Babel в обоих babel.config.js
:
{
only: [
'src',
'styleguide',
],
comments: false,
presets: [
[
'@babel/preset-env',
{
modules: false,
},
],
'@babel/preset-react',
],
plugins: [
'babel-plugin-array-includes',
'@babel/plugin-transform-runtime',
'@babel/plugin-transform-async-to-generator',
'@babel/plugin-proposal-class-properties',
'@babel/plugin-syntax-dynamic-import',
'@babel/plugin-syntax-import-meta',
'@babel/plugin-proposal-json-strings',
[
'@babel/plugin-proposal-decorators',
{
legacy: true,
},
],
],
env: {
production: {
plugins: [
'babel-plugin-add-module-exports',
'@babel/plugin-transform-modules-commonjs',
],
},
test: {
plugins: [
'@babel/plugin-transform-modules-commonjs',
'babel-plugin-dynamic-import-node',
],
},
},
}
В обоих случаях pkg.main
импортированный был в ES6 synthax, в то время как yargs
Выполнение сценария было перенесенным файлом ES5.
- Я считаю, что это не хорошо, я прав?
- Где происходит ошибка? Оба проекта имеют одинаковую конфигурацию Babel.
- Должен ли я предполагать, что в моем сценарии оба случая могут иметь место, и должен ли я поддерживать оба?