我使用webpack 1.13.0进行项目设置,似乎在使用webpack --watch
时,它只会监视入口点文件中的更改。
我有一个项目结构,我在$root\src
文件夹中有js文件,入口点文件是main.js
,其中包含以下内容:
import * as strings from 'strings'
document.write(strings.sayHello('foobar'));
字符串与此
位于同一个文件夹中export const helloWorld = 'Hello, world!';
export function sayHello(name) {
return `Hello ${name}`;
}
export const foo = 'bar';
export const bar = 'foo';
webpack.config.js包含此
module.exports = {
entry: "./src/main.js",
output: {filename: "./dist/bundle.js"},
resolve: {root: __dirname + '/src'},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: "babel-loader",
query: {
presets: ['es2015']
}
}
]
}
};
现在,如果我对main.js
进行任何更改,它将重新编译,但对strings.js
的更改不会触发重新编译。
答案 0 :(得分:0)
问题可能是导入语句:
import * as strings from 'strings'
如果我的理解正确,那么从非相对路径导入时,webpack(默认情况下)会在node_modules
内查找任何别名文件夹。这可能会解决您的问题(将'strings'
更改为'./strings
):
import * as strings from './strings';
答案 1 :(得分:0)
我在webpack 3中遇到了类似的问题
我如何修复它在Webpack配置中的问题,我将所有使用__dirname
的串联路径名更改为使用path.resolve
因此,在您的示例中,resolve: {root: __dirname + '/src'},
应该是:
resolve: root: path.resolve(__dirname, '/src')
此外,我发现我遇到文件系统区分大小写的问题。我的文件系统有一个大写的目录名/Network/index.js
,我的代码正在导入/network/index.js
。 Webpack能够在初始运行时解析此路径,但没有在监视周期中注册它。我将目录名小写,然后它开始工作。