Переопределить то, что входит в веб-пакет на основе расширения файла - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь выяснить, может ли веб-пакет сделать что-то подобное.У меня есть код, который я хочу связать для определенного устройства.Поэтому я создал ViewFactories.ios.tsx, и у меня также есть ViewFactories.tsx.Проблема, с которой я сталкиваюсь, заключается в том, что если я проигнорирую .ios.tsx в тесте загрузчика, он все равно будет упакован.Я использую плагин ignore-bundler, чтобы игнорировать файлы .ios.tsx, но ссылка просто пуста.то есть:

/** still getting loaded here: **/
const ViewFactories_ios_1 = __importDefault(__webpack_require__(/*! ./ViewFactories.ios */ "./build/app/src/modules/layouts/factories/ViewFactories.ios.tsx"));

/*** the referenced section, but blank now ***/
/***/ "./build/app/src/modules/layouts/factories/ViewFactories.ios.tsx":
/*!***********************************************************************!*\
  !*** ./build/app/src/modules/layouts/factories/ViewFactories.ios.tsx ***!
  \***********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
/***/ (function(module, exports) {
/***/ }),

Что мне действительно нужно, так это ссылка на ViewFactories.tsx вместо ViewFactories.ios.tsx.Есть ли в веб-пакете какой-то граф зависимостей, к которому я могу обратиться, чтобы сказать загрузчику использовать значение по умолчанию вместо .ios.tsx?

Моя конфигурация веб-пакета:

   {
      test: (modulePath) => {
          if (/\.ios\./.test(modulePath)) {
              console.log(modulePath);
              return false;
          }
          return /\.tsx?$/.test(modulePath);
      },
      loader: "awesome-typescript-loader",
      options: {
          configFileName: 'tsconfig.web.json',
          transpileOnly: true,
          errorsAsWarnings: true,
      }
    },
    {
        test: (modulePath) => {
            if (/\.ios\./.test(modulePath)) {
                console.log('Ignored:  ', modulePath);
                return true;
            }
            return false;
        },
        loader: 'ignore-loader'
    },

1 Ответ

0 голосов
/ 28 сентября 2018

Просто соберите две связки с общими параметрами конфигурации для чего-нибудь одинакового?

// webpack.config.js for two different bundles

let sharedModuleDef = {
  rules: ...
}

let sharedPlugins = ...

let iosBundle = {
  entry: "src/ios.entry.js",
  output: {
    path: ...
    filename: "ios.bundle.js"
  },
  module: sharedModuleDef,
  ...
};

let everythingElse = {
  entry: "src/main.entry.js",
  output: {
    path: ...
    filename: "standard.bundle.js"
  },
  module: sharedModuleDef,
  ...
};

module.exports = [iosBundle, everythingElse];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...