# output.dynamicImportInCjs

类型: boolean
CLI: --dynamicImportInCjs/--no-dynamicImportInCjs
默认: true

虽然 CommonJS 输出最初只支持 require(…) 语法来引入依赖,但最近的 Node 版本也开始支持 import(…) 语法,这是从 CommonJS 文件中引入 ES 模块的唯一方法。如果这个选项默认值为 true,表示 Rollup 会在 CommonJS 输出中保持外部依赖以 import(…) 表达式动态引入。将值设置为 false,以使用 require(…) 语法重写动态引入。

// 输入
import('external').then(console.log);

// 设置 dynamicImportInCjs 为 true 或不设置的 cjs 输出
import('external').then(console.log);

// 设置 dynamicImportInCjs 为 false 的 cjs 输出
function _interopNamespaceDefault(e) {
	var n = Object.create(null);
	if (e) {
		Object.keys(e).forEach(function (k) {
			if (k !== 'default') {
				var d = Object.getOwnPropertyDescriptor(e, k);
				Object.defineProperty(
					n,
					k,
					d.get
						? d
						: {
								enumerable: true,
								get: function () {
									return e[k];
								}
						  }
				);
			}
		});
	}
	n.default = e;
	return Object.freeze(n);
}

Promise.resolve()
	.then(function () {
		return /*#__PURE__*/ _interopNamespaceDefault(require('external'));
	})
	.then(console.log);
Last Updated: 6/14/2023, 8:56:23 AM