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

当格式为“es”时,如何处理全局?

  •  0
  • rob_hicks  · 技术社区  · 7 年前

    当汇总格式为“iLife”时,库被注入iLife,一切都正常。

    但是,当我使用“es”格式时,全局变量从未被引用,浏览器会抛出一个类型错误:

    Uncaught TypeError: Failed to resolve module specifier 'incremental-dom'

    这是我的汇总表。配置。js文件:

    const path = require('path');
    const root = process.cwd();
    const string = require('rollup-plugin-string');
    const superviews = require('rollup-plugin-superviews');
    
    export default [
      {
        input: path.resolve(root, 'src', 'idx-admin-tab', 'component.js'),
        plugins: [
          superviews({include: 'src/**/*.html'}),
          string({include: ['src/**/*.css', 'src/**/*.svg']})
        ],
        globals: {'incremental-dom': 'IncrementalDOM'},
        external: ['incremental-dom'],
        output: {
          file: path.resolve(root, 'dist', 'idx-admin-tab.es.js'),
          format: 'es'
        }
      }
    ];
    1 回复  |  直到 7 年前
        1
  •  1
  •   Rich Harris    7 年前

    globals iife umd 如果要创建 es

    如果您只想使用浏览器的本机 import 支持,则必须打开模块说明符 incremental-dom

    export default [
      {
        // ...
        external: ['incremental-dom'],
        paths: {
          'incremental-dom': '/node_modules/incremental-dom/dist/incremental-dom.js'
        },
        // ...
      }
    ];
    

    不幸的是,增量dom没有ESM构建,所以您不能 它因此,如果您不想捆绑它,则必须欺骗Rollup使用全局 IncrementalDOM 模式

    rollup-plugin-virtual

    export default [
      {
        // ...
        plugins: [
          superviews({include: 'src/**/*.html'}),
          string({include: ['src/**/*.css', 'src/**/*.svg']}),
          virtual({
            'incremental-dom': 'export default window.IncrementalDOM'
          })
        ],
        // ...
      }
    ];