Как интегрировать React-app-rewired с Customize-CRA - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу переопределить конфигурацию Webpack с помощью response-app-rewired. Но я использую Ant design для своего проекта, поэтому я должен использовать Customize-CRA для импорта плагина Babel и т. Д. Как использовать React-app-rewired и Customize-CRA вместе.

config-overrides.js для React-app-rewired, как показано ниже:

module.exports = function override(config, env) {
  config.module.rules = config.module.rules.map(rule => {
        if (rule.oneOf instanceof Array) {
            return {
                ...rule,
                oneOf: [
                    {
                        test: /\.(svg|png|jpg|jpeg|gif|bmp|tiff)$/i,
                        use: [
                            {
                                loader: 'file-loader',
                                options: {
                                    name: '[path][name]-[hash:8].[ext]'
                                }
                            }
                        ]
                    },
                    ...rule.oneOf
                ]
            };
        }

        return rule;
    });

  return config;
}

config-overrides.js для Customize-CRA, как показано ниже:

const {override, fixBabelImports, addLessLoader, addDecoratorsLegacy, disableEsLint} = require('customize-cra');

module.exports = override(
  addDecoratorsLegacy(),
  disableEsLint(),
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: true,
  }),
  addLessLoader({
    javascriptEnabled: true,
    modifyVars: {'@primary-color': '#a50052'},
  }),
);

Спасибо.

Ответы [ 3 ]

0 голосов
/ 25 мая 2019

Я нашел подсказки из документа о дизайне муравьев:

const {
  override,
  fixBabelImports,
} = require("customize-cra");


module.exports = override( 
  fixBabelImports("import", {
    libraryName: "antd-mobile",
    style: 'css'
  })
);

Ссылка:

https://mobile.ant.design/docs/react/use-with-create-react-app#Use-modularized-antd-mobile

0 голосов
/ 11 июня 2019

Я думаю, что столкнулся с той же проблемой, что и вы.Переопределение customize-cra принимает любое количество переопределенных функций в качестве аргументов.Каждой функции задается конфиг в качестве первого аргумента.Думайте об этом как о составной функции.Возьмите существующий экспорт переопределения, поместите его в функцию, которую вы определили, я назвал myOverrides или что-то еще, затем экспортируйте переопределение customize-cra с вашей функцией переопределения в качестве одного из аргументов.

before:

module.exports = function override(config, env){
  // do stuff to config
  return config
}

после:

function myOverrides(config) {
  // do stuff to config
  return config
}

module.exports = override(
  myOverrides,
  addDecoratorsLegacy(),
  disableEsLint(),
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: true,
  }),
  addLessLoader({
    javascriptEnabled: true,
    modifyVars: {'@primary-color': '#a50052'},
  }),
);
0 голосов
/ 24 мая 2019

Ввод конфиг с перереагирующим приложением ПОСЛЕ ТОГО, как настройка-кра работал для меня.Это не работает, если я назначаю объект для конфигурации, но работает, если я исправляю конфигурацию построчно.Я уверен, что есть более элегантное решение.

module.exports = function override(config, env) {
    const APP = process.env.REACT_APP_APP
    const BRAND = process.env.REACT_APP_BRAND

    addWebpackAlias({
        ['@app-config']: path.resolve(__dirname, `./src/brands/${BRAND}/app`),
    })

    config.entry = `./src/${APP}/index.js`
    config.resolve.alias['@app-config'] = path.resolve(__dirname, `./src/brands/${BRAND}`)
    config.resolve.modules = [
        path.join(__dirname, `src/brands/${BRAND}`)
    ].concat(config.resolve.modules)


    return config
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...