我们一直在使用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
约定,但显然看起来名称应该能够成为任何东西。
答案 0 :(得分:1)
您确定它无效吗?您正在检查正确的文件( app.js ,总是如此)?如果通过“文件[...]不再编译”,则表示当您获取文件时,不会编译名为 app2.js 的文件,这是预期的行为从您的配置看起来。
根据您的配置,无论您的输入文件是什么,您的转换文件都将始终命名为 app.js :
filename: '[name].js', // => translates to "app.js"
[name]
被替换为块的名称,即“app”:
entry: {
app: ...
},
为了避免输入和输出之间出现混淆,您可以区别地命名您的块,或者只是使用硬编码的名称作为输出,例如'bundle.js'