禁用 webpack 的文件监视 vim 个 swp 文件

Disable webpack's file watching for vim swp files

每次我用 vim 打开文件时,webpack 都会检测到更改并重新编译代码。 Vim 创建像 .test.txt.swp 这样的临时文件,这让 webpack 相信项目中发生了一些变化。

禁用 swp 文件创建有帮助,但我想保持 swp 文件的安全,不要因浏览器过于频繁地重新加载页面或不必要的代码编译而分心。

如何让 webpack 知道它不应该对 .*.swp 文件的更改做出反应?

编辑: 它实际上是 webpack-dev-server 对检测到的新 vim 交换文件做出反应。并且只有当源文件中有特定条目将要被编译时,它才会这样做。示例来自导入 angular2,但不仅限于它: import '@angular/core'; import '@angular/common';

我对 "webpack" 一无所知,但您可以告诉 Vim 将交换文件存储在单个目录中,而不是使用 'dir' 设置的当前目录。我在我的 vimrc 中使用这个:

set dir=$HOME/.vim/tmp/swap
if !isdirectory(&dir) | call mkdir(&dir, 'p', 0700) | endif

这还将解决其他工具的问题,以及 "dangling swap files"、VCS 系统中的交换文件等问题。

如果你想忽略 Vim 工具(如 webpack)中的交换文件,请记住仅忽略 .swp 是不够的; Vim 也可以创建扩展名为 .swo.swn 等的交换文件

您可以根据模式排除文件:

module: {
  loaders: [
    {
      // existing loader config
      exclude: /\.swp$/,
    },
  ]
}

不过,您不应该默认捆绑所有内容;使用加载程序测试仅捆绑 .js 文件(或您明确需要的任何文件;.jsx.css 等)。像这样的东西,例如:

module: {
  loaders: [
    {
      test: /.jsx?$/,
      loader: 'babel-loader',
      exclude: [/node_modules/, 'test/', /\.swp$/],
      query: {
        presets: ['es2015', 'react']
      }
    },
    {
      test: /\.css$/,
      loader: "style-loader!css-loader"
    },
  ]
}

我的答案是对 webpack 配置进行以下更改

<webpackConfObject>.devServer.watchOptions = {
  ignored: /\.sw.$/
};

模块的排除属性不适用于触发事件以在 webpack 开发服务器上重新加载页面的文件观察器,但您可以 ignore 匹配模式的文件。