每次我用vim打开文件时,webpack都会检测到更改并重新编译代码。 Vim创建了像.test.txt.swp这样的临时文件,这使得webpack相信项目中发生了一些变化。
禁用swp文件创建有所帮助,但我希望保持swp文件的安全,不要因为浏览器重新加载页面太过分心,也不要用不必要的代码编译。
如何让webpack知道它不应该对。* .swp文件的变化做出反应?
编辑:
它实际上是webpack-dev-server,它对检测到的新vim交换文件做出反应。只有在源文件中有特定条目即将编译时才会执行此操作。示例来自导入angular2,但不仅仅是:
import '@angular/core';
import '@angular/common';
答案 0 :(得分:11)
我对" webpack"一无所知,但您可以告诉Vim将交换文件存储在单个目录中,而不是使用'dir'
设置存储当前目录。我在我的vimrc中使用它:
set dir=$HOME/.vim/tmp/swap
if !isdirectory(&dir) | call mkdir(&dir, 'p', 0700) | endif
这也将解决其他工具的问题,以及"悬空交换文件",VCS系统中的交换文件等。
如果你想忽略工具中的Vim交换文件(例如webpack),那么请记住,忽略.swp
是不够的; Vim还可以创建包含.swo
,.swn
等扩展名的交换文件。
答案 1 :(得分:3)
您可以根据模式排除文件:
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"
},
]
}
答案 2 :(得分:0)
对我来说,答案是webpack配置的以下更改
<webpackConfObject>.devServer.watchOptions = {
ignored: /\.sw.$/
};
模块的exclude属性不适用于触发事件以在webpack dev服务器上重新加载页面的文件观察器,但您可以ignore匹配模式的文件。