我的json
脚本中某处需要一个node
文件,但我不希望将其与rollup
捆绑在一起。我希望将其视为“外部”。每次json
文件更改时,脚本都应该能够拾取更改,而无需逐级重建捆绑包。当前,它在捆绑包中是“硬编码的”:
// ./src/index.js
const json = require('../example.json');
./example.json
为:
{
"exampleValue": "X"
}
返回包含以下内容的捆绑包:
// ...
var exampleValue = "X";
var example = {
exampleValue: exampleValue
};
var example$1 = /*#__PURE__*/Object.freeze({
exampleValue: exampleValue,
default: example
});
// ...
我尝试用rollup-plugin-json
排除它,但正如我所料,它会抛出:
[!]错误:意外的令牌(请注意,您需要rollup-plugin-json才能导入JSON文件)
是否可以将json文件标记为外部文件,就像通过汇总配置文件中的external
和output.paths
属性标记外部程序包的方法一样?
答案 0 :(得分:2)
rollup-plugin-json插件实际上为我完成了工作。这是我的配置文件rollup-config.js
:
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
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
})
]
}
];
源代码:
// test.json
[1, 2, 3]
// index.js
const test = require('./test.json')
console.log(test) // Array(3) [ 1, 2, 3 ]
rollup
的输出如下:
var test = [1,2,3];
var test$1 = /*#__PURE__*/Object.freeze({
'default': test
});
var test$2 = getCjsExportFromNamespace(test$1);
我还不知道这背后的原因是什么。您可以忽略test$1
和test$2
变量。