Как отключить «строгий» режим в веб-пакете? - PullRequest
1 голос
/ 12 апреля 2019

IM, извините за этот вопрос новичка, но это сводит меня с ума.Я купил пакет компонентов реагирования и пришел с этой сложной конфигурацией веб-пакетов, и на самом деле не позволяет мне компилировать, пока не решу некоторые строгие правила синтаксиса, такие как пробелы, запятые, одинарные кавычки и т. Д. *

enter image description here

И это мой большой файл webpack.config.dev.js:

module.exports = {

  mode: 'development',
  devtool: 'cheap-module-source-map',
  entry: [
    require.resolve('react-dev-utils/webpackHotDevClient'),
    paths.appIndexJs,
  ],
  output: {
    pathinfo: true,
    filename: 'static/js/bundle.js',
    chunkFilename: 'static/js/[name].chunk.js',
    publicPath: publicPath,
    devtoolModuleFilenameTemplate: info =>
      path.resolve(info.absoluteResourcePath).replace(/\\/g, '/'),
  },
  optimization: {
    splitChunks: {
      chunks: 'all',
      name: false,
    },
    runtimeChunk: true,
  },
  resolve: {
    modules: ['node_modules'].concat(
      process.env.NODE_PATH.split(path.delimiter).filter(Boolean)
    ),
    extensions: ['.web.js', '.js', '.json', '.web.jsx', '.jsx'],
    alias: {
      'react-native': 'react-native-web',
    },
    plugins: [
      PnpWebpackPlugin,
      new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson]),
    ],
  },
  resolveLoader: {
    plugins: [
      PnpWebpackPlugin.moduleLoader(module),
    ],
  },
  module: {
    strictExportPresence: true,
    rules: [
      { parser: { requireEnsure: false } },

      {
        test: /\.(js|jsx)$/,
        enforce: 'pre',
        use: [
          {
            options: {
              formatter: require.resolve('react-dev-utils/eslintFormatter'),
              eslintPath: require.resolve('eslint'),

            },
            loader: require.resolve('eslint-loader'),
          },
        ],
        include: paths.appSrc,
      },
      {
        test: /\.mjs$/,
        include: /node_modules/,
        type: 'javascript/auto',
      },
      {
        oneOf: [
          {
            test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
            loader: require.resolve('url-loader'),
            options: {
              limit: 10000,
              name: 'static/media/[name].[hash:8].[ext]',
            },
          },
          {
            test: /\.(js|jsx)$/,
            include: paths.appSrc,
            loader: require.resolve('babel-loader'),
            options: {
              customize: require.resolve(
                'babel-preset-react-app/webpack-overrides'
              ),

              plugins: [
                [
                  require.resolve('babel-plugin-named-asset-import'),
                  {
                    loaderMap: {
                      svg: {
                        ReactComponent: '@svgr/webpack?-prettier,-svgo![path]',
                      },
                    },
                  },
                ],
              ],
              cacheDirectory: true,
              cacheCompression: false,
            },
          },
          {
            test: /\.js$/,
            exclude: /@babel(?:\/|\\{1,2})runtime/,
            loader: require.resolve('babel-loader'),
            options: {
              babelrc: false,
              configFile: false,
              compact: false,
              presets: [
                [
                  require.resolve('babel-preset-react-app/dependencies'),
                  { helpers: true },
                ],
              ],
              cacheDirectory: true,
              cacheCompression: false,

              sourceMaps: false,
            },
          },
          {
            test: cssRegex,
            exclude: cssModuleRegex,
            use: getStyleLoaders({
              importLoaders: 1,
            }),
          },
          {
            test: cssModuleRegex,
            use: getStyleLoaders({
              importLoaders: 1,
              modules: true,
              getLocalIdent: getCSSModuleLocalIdent,
            }),
          },
          {
            test: sassRegex,
            exclude: sassModuleRegex,
            use: getStyleLoaders({ importLoaders: 2 }, 'sass-loader'),
          },
          {
            test: sassModuleRegex,
            use: getStyleLoaders(
              {
                importLoaders: 2,
                modules: true,
                getLocalIdent: getCSSModuleLocalIdent,
              },
              'sass-loader'
            ),
          },
          {
            exclude: [/\.(js|jsx)$/, /\.html$/, /\.json$/],
            loader: require.resolve('file-loader'),
            options: {
              name: 'static/media/[name].[hash:8].[ext]',
            },
          },
        ],
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      inject: true,
      template: paths.appHtml,
    }),
    new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw),
    new ModuleNotFoundPlugin(paths.appPath),
    new webpack.DefinePlugin(env.stringified),
    new webpack.HotModuleReplacementPlugin(),
    new CaseSensitivePathsPlugin(),
    new WatchMissingNodeModulesPlugin(paths.appNodeModules),
    new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
    new ManifestPlugin({
      fileName: 'asset-manifest.json',
      publicPath: publicPath,
    }),
  ],

  node: {
    dgram: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty',
    child_process: 'empty',
  },
  performance: false,
};

Для начала я думаю, что проблема с этим файлом нет?Я хочу скомпилировать свой проект с обычным синтаксисом и без строгих правил babel (некоторые из них бесполезны, такие как запятая после последнего параметра объекта).

Пожалуйста, любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Во-первых, никогда не покупайте то, что бесплатно (если вы покупаете учебник, то это не так, но покупка кода не поможет вам учиться, если вы не понимаете, что ищете в). Существует множество бесплатных инструментов, настроек, учебных пособий и руководств, которые покрывают ваши потребности в разработке. Например, create-реагировать-приложение является бесплатным, высоко поддерживаемым и очень удобным для начинающих разработчиков.

В любом случае, вы видите ESlint ошибок. ESlint - отличный инструмент для стандартизации вашего кода. Это вынуждает разработчиков писать код определенным способом для хорошей интеграции между проектами (предотвращает смешивание правил и стилей синтаксиса) Поэтому я не рекомендую его отключать, и вместо этого вы должны исправить ошибки соответственно.

Чтобы устранить некоторые из ваших ошибок:

запятая качают

импорт / заказ

ключ-разнос

qoutes

стрела-разнос

полу

предпочитать-шаблон

реагировать / деструктурирующее присваивание

предпочитать стрелок обратного вызова

пространство-Before-функция-скобка

нет-вар

нет-неиспользованного-вар

стрелка-круглые скобки

запятая разнос

реагировать / JSX-первых проп-новая строка

Все эти ошибки - простые ошибки, которые можно легко исправить.

0 голосов
/ 12 апреля 2019

Если вы хотите отключить проверки, то, вероятно, достаточно удалить следующий раздел:

{
  test: /\.(js|jsx)$/,
  enforce: 'pre',
  use: [
    {
      options: {
        formatter: require.resolve('react-dev-utils/eslintFormatter'),
        eslintPath: require.resolve('eslint'),

      },
      loader: require.resolve('eslint-loader'),
    },
  ],
  include: paths.appSrc,
},

Тем не менее, рассмотрите возможность сохранения проверок как зацепку перед фиксацией или перед отправкой.Это значительно поможет здоровью вашей кодовой базы.

Если есть некоторые правила, которые вам действительно не нравятся, в каталоге вашего проекта будет файл .eslintrc.js или аналогичный, который вы можете использовать для настройки правил.

...