代码之家  ›  专栏  ›  技术社区  ›  Luxalpa

如何获取汇总以转换require()调用?

  •  3
  • Luxalpa  · 技术社区  · 9 年前

    我正在尝试使用汇总来构建我的项目。我使它的大部分工作正常(包括Angular 2),但我无法转换我的一些多边形填充,因为它们调用 require() 在他们。即使 rollup-plugin-node-resolve rollup-plugin-commonjs 它不会碰 require

    那么我该如何转换它们呢?我可以使用的一种解决方法是将polyfill浏览器化,然后将浏览器化的bundle包含在汇总过程中,但这需要大量额外的插件,并不是一个干净的解决方案,特别是因为我认为汇总应该能够理解CommonJS。

    下面是Node.js的一些测试代码:

    "use strict";
    let rollup = require("rollup");
    let fs = require("fs");
    let resolve = require("rollup-plugin-node-resolve");
    let commonjs = require("rollup-plugin-commonjs");
    
    rollup.rollup({
        entry: "src/main.js",
        plugins: [
            resolve({
                jsnext: true,
                main: true
            }),
            commonjs({
                include: '**', // also tried src/** node_modules/** and a lot of other stuff. 
                               // Leaving this undefined stops rollup from working
            }),
        ]
    }).then(function(bundle) {
        bundle.write({
            format: "iife",
            dest: "www/bundle.js"
        })
    });
    

    然后使用一个简单的文件 src/main.js 它只包含一行 require("./some-file.js"); src/some-file.js 包含任何显示问题的内容。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Luxalpa    9 年前

    我在rollup gitter的好人的帮助下解决了这个问题。

    我需要添加一个 moduleName bundle.write 这样的选项:

    bundle.write({
        format: "iife",
        dest: "www/bundle.js"
        moduleName: "someModule"
    })