babel-loader:transile一个名为app.js的条目?

时间:2017-04-13 17:06:56

标签: webpack babel babel-loader

我们一直在使用webpack和babel-loader插件来转换ES一段时间。对于我们的开发环境,我们的配置文件如下所示:

</body>

我使用module.exports = { entry: { // When I change the below to app2.js, it's no longer transpiled app: path.resolve(__dirname, 'client', 'app.js'), }, module: { loaders: [ { exclude: /node_modules/, loader: 'babel', test: /\.js$/, }, { test: /\.s?css$/, loader: ExtractTextPlugin.extract('style-loader', sassLoaders.join('!')), }, ], }, output: { path: path.resolve(__dirname, 'build'), publicPath: 'http://localhost:8080/', filename: '[name].js', }, plugins: [ new ExtractTextPlugin('[name].css'), new webpack.DefinePlugin(processEnvPlugin), ], postcss: [ autoprefixer({ browsers: ['last 2 versions'], }), ], resolve: { extensions: ['', '.js', '.scss', '.css'], root: [__dirname], }, }; 运行此功能。

问题是,如果我在webpack-dev-server --inline --config=webpack-dev.config.js --content-base='client'或其他任何内容中更改app.js,该文件仍然由webpack服务器(在8080上运行)提供,但不再被转换。

在babel-loader方面,名称app2.js是否有独特/神奇的东西?实际上,我能找到的每个示例教程,包括webpack文档,都使用app.js约定,但显然看起来名称应该能够成为任何东西。

1 个答案:

答案 0 :(得分:1)

您确定它无效吗?您正在检查正确的文件( app.js ,总是如此)?如果通过“文件[...]不再编译”,则表示当您获取文件时,不会编译名为 app2.js 的文件,这是预期的行为从您的配置看起来。

根据您的配置,无论您的输入文件是什么,您的转换文件都将始终命名为 app.js

filename: '[name].js', // => translates to "app.js"

[name]被替换为块的名称,即“app”:

 entry: {
    app: ...
 },

为了避免输入和输出之间出现混淆,您可以区别地命名您的块,或者只是使用硬编码的名称作为输出,例如'bundle.js'