标签: babel

  • babel-loader 生成多处 /******/ 前缀

    使用 babel-loader 处理 .js 文件之后会在公共文件里多处行首添加 /******/,不明白为什么要这样做。

    难道仅仅是为了区别框架代码和用户代码?

    /******/ (function(modules) { // webpackBootstrap
    /******/    // install a JSONP callback for chunk loading
    /******/    var parentJsonpFunction = window["webpackJsonp"];
    /******/    window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules) {
    /******/        // add "moreModules" to the modules object,
    /******/        // then flag all "chunkIds" as loaded and fire callback
    /******/        var moduleId, chunkId, i = 0, callbacks = [];
    /******/        for(;i < chunkIds.length; i++) {
    /******/            chunkId = chunkIds[i];
    /******/            if(installedChunks[chunkId])
    /******/                callbacks.push.apply(callbacks, installedChunks[chunkId]);
    /******/            installedChunks[chunkId] = 0;
    /******/        }
    /******/        for(moduleId in moreModules) {
    /******/            modules[moduleId] = moreModules[moduleId];
    /******/        }
    /******/        if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);
    /******/        while(callbacks.length)
    /******/            callbacks.shift().call(null, __webpack_require__);
    /******/        if(moreModules[0]) {
    /******/            installedModules[0] = 0;
    /******/            return __webpack_require__(0);
    /******/        }
    /******/    };
    

    目前应该没有参数可以控制移除,因为在文件 ./node_modules/webpack/lib/MainTemplate.js 中硬编码了这一段前缀

    this.plugin("render", function(bootstrapSource, chunk, hash, moduleTemplate, dependencyTemplates) {
        var source = new ConcatSource();
        source.add("/******/ (function(modules) { // webpackBootstrap\n");
        source.add(new PrefixSource("/******/", bootstrapSource));
        source.add("/******/ })\n");
        source.add("/************************************************************************/\n");
        source.add("/******/ (");
        var modules = this.renderChunkModules(chunk, moduleTemplate, dependencyTemplates, "/******/ ");
        source.add(this.applyPluginsWaterfall("modules", modules, chunk, hash, moduleTemplate, dependencyTemplates));
        source.add(")");
        return source;
    });
    

    babel-loader 配置参考: API · Babel