Нью-Йорк с Webpack 4, используя папку .tmp - PullRequest
0 голосов
/ 25 сентября 2018

Я сейчас использую:

"mocha": "^5.2.0"
"mocha-webpack": "^2.0.0-beta.0"
"webpack": "^4.19.1"
"nyc": "^13.0.1"

и по какой-то причине я получаю странные исходные файлы.

.tmp/mocha-webpack/1537879911832/webpack:/src                            
|    61.18 |    29.63 |    64.29 |    61.18 |                   |
  db.js    

Мне интересно, как это генерируется, потому что excludeне работает

"nyc": {
    "exclude": [
        "./tmp/**/*"
    ],
}

Вот мой файл веб-пакета

var nodeExternals = require("webpack-node-externals")
const path = require("path")
const webpack = require("webpack")

const webpackConfig = {
    mode: "none",
    context: path.resolve(__dirname),
    resolve: {
        extensions: [".js"],
        alias: {
            "#": path.join(__dirname, "../src"),
        }
    },
    output: {
        // use absolute paths in sourcemaps (important for debugging via IDE)
        devtoolModuleFilenameTemplate: "[absolute-resource-path]",
        devtoolFallbackModuleFilenameTemplate: "[absolute-resource-path]?[hash]"
    },
    devtool: "inline-cheap-module-source-map",
    plugins: [
        new webpack.NamedModulesPlugin()
    ],
    target: "node", // webpack should compile node compatible code
    externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
}

module.exports = webpackConfig

1 Ответ

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

Я получил его, прочитав это руководство: https://github.com/vuejs/vue-test-utils-mocha-webpack-example

Основной трюк заключался в установке babel-plugin-istanbul и обновлении .babelrc файла:

"env": {
    "test": {
      "plugins": ["istanbul"]
    }
  }

А package.json выглядит так:

"nyc": {
    "exclude": [
      "**/tests/**/*.js",
      ".tmp/**/*.js",
      "webpack.config.js"
    ]
  }

А webpack.config.js выглядит так:

var path = require('path')
var webpack = require('webpack')
const nodeExternals = require('webpack-node-externals')

module.exports = {
  entry: './src/main.js',
  output: {
    // use absolute paths in sourcemaps (important for debugging via IDE)
    devtoolModuleFilenameTemplate: '[absolute-resource-path]',
    devtoolFallbackModuleFilenameTemplate: '[absolute-resource-path]?[hash]',
  },
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': path.resolve(__dirname, 'src')
    }
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      },
      {
        test: /\.(png|jpg|gif|svg)$/,
        loader: 'file-loader',
        options: {
          name: '[name].[ext]?[hash]'
        }
      }
    ]
  },
  devServer: {
    historyApiFallback: true,
    noInfo: true
  },
  performance: {
    hints: false
  },
  devtool: 'inline-cheap-module-source-map',
  externals: ["fs", nodeExternals()],
  mode: 'development',
  plugins: [
    new webpack.NamedModulesPlugin()
  ]
}

...