webpack手表只能观看入场

时间:2016-05-06 09:04:26

标签: javascript webpack ecmascript-6 babeljs

我使用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的更改不会触发重新编译。

2 个答案:

答案 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能够在初始运行时解析此路径,但没有在监视周期中注册它。我将目录名小写,然后它开始工作。