如何将rollup中的所有节点模块设置为外部?

问题描述 投票:0回答:5

我想将从 node_modules 导入的所有模块作为外部模块。 这是什么配置?

我尝试过但没有成功:

import path from "path";
import glob from "glob";
import multiEntry from "rollup-plugin-multi-entry";

export default {
    entry: "src/**/*.js",
    format: "cjs",
    plugins: [
        multiEntry()
    ],
    external: glob.sync("node_modules/**/*.js").map(file => path.resolve(file)),
    dest: "dist/bundle.js"
}];

import multiEntry from "rollup-plugin-multi-entry";

export default {
    entry: "src/**/*.js",
    format: "cjs",
    plugins: [
        multiEntry()
    ],
    external: id => id.indexOf("node_modules") !== -1,
    dest: "dist/bundle.js"
}];
node.js module rollup
5个回答
13
投票

使用 rollup 2.63 这对我有用

export default {
    // ...
    external: [/node_modules/],
    // ...
}

7
投票

您可以使用 package.json 依赖项字段来完成此操作:

const pkg = require('./package.json');

export default {
    // ...
    external : Object.keys(pkg.dependencies),
    // ...
}

3
投票

更新:

使用rollup-plugin-auto-external


感谢@IsidroTorregrosa他的回答(当然还有@maxkueng)。我通过添加节点内置模块(如

fs
path
)以及
peerDependencies
来改进它。用途:

import builtins from 'builtin-modules/static'
const pkg = require('./package.json')
// ...
export default {
    external: builtins.concat(Object.keys(pkg.dependencies || {})).concat(Object.keys(pkg.peerDependencies || {})),
    // ...
}

请参阅 npmjs.com 上的 builtin-modules,另请参阅:

https://github.com/rollup/rollup-plugin-node-resolve#resolving-built-ins-like-fs


1
投票
汇总配置
import pkg from "./package.json";

/**
 * Rollup bundler configuration.
 *
 * @see https://rollupjs.org/
 * @type {import("rollup").RollupOptions}
 */
export default {
  ...
  external: [...Object.keys(pkg.dependencies), /^node:/]
}
应用程序源代码
import path from "node:path";
import fs from "node:fs/promises";

...

来源:GraphQL API 和 Relay 入门套件

api/rollup.config.js


0
投票

以下对我有用

external: id => !(path.isAbsolute(id) || id.startsWith("."));

来源:https://github.com/rollup/rollup-plugin-node-resolve/issues/110#issuecomment-350353632

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.