汇总:如何要求 json 但不将其包含在包中

axm*_*m__ 6 node.js rollupjs

我有一个json是需要我的地方文件node的脚本,但我希望有它捆绑的rollup。我希望它被视为“外部”。每次json文件更改时,脚本应该能够在不通过汇总重建包的情况下获取更改。目前,它在捆绑包中是“硬编码”的:

// ./src/index.js
const json = require('../example.json');

Run Code Online (Sandbox Code Playgroud)

./example.json

{
    "exampleValue": "X"
}
Run Code Online (Sandbox Code Playgroud)

返回一个包,其中包括:

{
    "exampleValue": "X"
}
Run Code Online (Sandbox Code Playgroud)

我试图用 排除它rollup-plugin-json,但正如我所料,它抛出:

[!] 错误: Unexpected token (注意你需要 rollup-plugin-json 来导入 JSON 文件)

是否可以将 json 文件标记为外部,就像您可以通过汇总配置文件中的属性externaloutput.paths属性标记外部包一样?

Dmi*_*try 7

JSON插件实际上做的工作对我来说。这是我的配置文件rollup-config.js

// import json from 'rollup-plugin-json'; Deprecated
import json from '@rollup/plugin-json';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import pkg from './package.json';


export default [
    // browser-friendly UMD build
    {
        input: './index.js',
        output: {
            file: '../index.js',
            name: 'Hy52fWS8r', // The global (never used) name for the factory of this UMD
            format: 'umd'
        },
        plugins: [
            resolve(),
            commonjs(),
            json({
                compact: true
            })
        ]
    }
];

Run Code Online (Sandbox Code Playgroud)

源代码:

// test.json
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
// index.js
const test = require('./test.json')
console.log(test) // Array(3) [ 1, 2, 3 ]
Run Code Online (Sandbox Code Playgroud)

rollup的输出如下:

var test = [1,2,3];

var test$1 = /*#__PURE__*/Object.freeze({
    'default': test
});

var test$2 = getCjsExportFromNamespace(test$1);
Run Code Online (Sandbox Code Playgroud)

我还不知道这背后的原理是什么。您可以忽略test$1test$2变量。

  • 知道如何让它不将其捆绑在“@rollup/plugin-json”、@SabriMeviş 中吗?与OP有同样的问题,但在当代版本中,文档仍然没有说。 (3认同)