Почему мой 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.

  1. Я считаю, что это не хорошо, я прав?
  2. Где происходит ошибка? Оба проекта имеют одинаковую конфигурацию Babel.
  3. Должен ли я предполагать, что в моем сценарии оба случая могут иметь место, и должен ли я поддерживать оба?

0 ответов

Другие вопросы по тегам