Webpack多个入口点混淆

时间:2016-01-06 01:32:49

标签: javascript webpack webpack-dev-server

从我最初了解webpack的多个入口点,例如

entry: {
    a: "./a",
    b: "./b",
    c: ["./c", "./d"]
},
output: {
    path: path.join(__dirname, "dist"),
    filename: "[name].entry.js"
}

它会将它们捆绑为a.entry.js,b.entry.js和c.entry.js。没有d.entry.js,因为它是c的一部分。

但是在工作中,这些价值让我很困惑。为什么值是http链接而不是文件?

app: [
  'webpack/hot/dev-server',
  'webpack-dev-server/client?http://localhost:21200',
  './lib/index.js'
],
test: [
  'webpack/hot/dev-server',
  'webpack-dev-server/client?http://localhost:21200',
  './test/test.js'
]

1 个答案:

答案 0 :(得分:4)

正如对该问题的评论中所述,HTTP URL用于webpack-dev-server及其热加载模块。但是,您想要为捆绑包的生产版本省略这些模块,因为您不需要热加载,它使您的捆绑包容易超过10,000行代码(另外!)。

为了个人对海报的兴趣,这里有一个示例生产配置(简约),用于我的项目(称为dragJs)。

// file: webpack.production.babel.js
import webpack from 'webpack';
import path from 'path';

const ROOT_PATH = path.resolve('./');

export default {
    entry: [
        path.resolve(ROOT_PATH, "src/drag")
    ],
    resolve: {
        extensions: ["", ".js", ".scss"]
    },
    output: {
        path: path.resolve(ROOT_PATH, "build"),
        filename: "drag.min.js"
    },
    devtool: 'source-map',
    module: {
        loaders: [
            {
                test: /\.js$/,
                loader: 'babel',
                include: path.resolve(ROOT_PATH, 'src')
            },
            {
                test: /\.scss$/,
                loader: 'style!css!sass'
            }
        ]
    },
    plugins: [
        new webpack.optimize.UglifyJsPlugin()
    ]
};

一些事情:

  • 我只使用一个入口点,但您可以使用多个入口点,就像在示例中一样
  • 入口点仅指我的js文件 - 没有用于生产的webpack-dev-server
  • 配置文件使用ECMAScript2015(因此名称为*.babel.js
  • 编写
  • 它使用sourcemaps和uglify优化插件
  • babel-loader的预设在我的.babelrc文件
  • 中指定
  • 使用此配置通过webpack -p --config ./webpack.production.babel.js
  • 运行webpack

如果还有其他问题,我将很高兴在评论中回答这些问题。