15

TypeScript ライブラリに依存する JavaScript パッケージが 1 つあるマルチパッケージ プロジェクトをセットアップしました。最初に Sinopia をインストールし、変更を加えるたびにライブラリを再インストールしていました。そしたら開発しやすいなと見npm linkて思ったんです。残念ながら、(を使用してnpm link ../typescript-package) ライブラリをリンクしてビルドすると、エラーが発生します。

ERROR in ../typescript-package/dist/index.js
Module build failed: Error: No ESLint configuration found.

これらは別々のパッケージであるため、Webpack がこのパッケージに eslint を適用しようとしている理由がよくわかりません。これが私のwebpack.common.jsファイルです(マージを使用し、開発と製品の構成は問題になりません):

// webpack.common.js
const ExtractTextPlugin = require('extract-text-webpack-plugin');

const babelOptions = {
  presets: ['react', 'es2015', 'stage-0'],
  sourceMaps: true,
  retainLines: true,
};

module.exports = {
  entry: {
    solver: './source/index.jsx',
  },
  output: {
    path: `${__dirname}/dist`,
    filename: '[name].js',
    publicPath: '/dist/',
  },
  resolve: {
    modules: ['source', 'node_modules/'],
    extensions: ['.js', '.jsx', '/index.jsx', '.json', '.ts', '/index.ts', '.scss', '/index.scss', '.css'],
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        use: [
          {
            loader: 'babel-loader',
            options: babelOptions,
          },
          {
            loader: 'eslint-loader',

            options: {
              emitWarnings: true,
            },
          },
        ],
        exclude: /node_modules/,
      }, {
        test: /\.js$/,
        loader: 'source-map-loader',
        enforce: 'pre',
        exclude: /node_modules/,
      }, {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: [{
            loader: 'css-loader',
            options: {
              minimize: true,
              localIdentName: '[local]_[hash:base64:5]',
            },
          }, {
            loader: 'sass-loader',
            options: {
              includePaths: ['source/design'],
            },
          }],
        }),
      },
    ],
  },
  plugins: [
    new ExtractTextPlugin({
      filename: '[name].css',
      allChunks: true,
    }),
  ],
  node: {
    global: true,
  },
};

必要に応じて、他の構成ファイルまたは package.json ファイルも提供できます。

4

3 に答える 3

0

.eslintignoreファイルを追加して、リンクされたモジュールへの実際のパスを追加することもできます

// Content of .eslintignore
C:/path/to/your/linked/module

node_modulesこれが必要なのは、webpack がフォルダー内のパスではなく実際のパスでモジュールを解決するためです( webpack docsを参照)。通常、eslint はnode_modulesデフォルトで無視しますが、そのため、ここでは機能しません。

于 2022-01-18T11:13:23.190 に答える