решение FelixKing осознало:
//somefile.js
var someJSONObject = {
SOME_KEY: "VALUE";
};
module.exports = someJSONObject;
//Gruntfile.js
var json = require('somefile');
console.log(json.SOME_KEY); //logs "VALUE"
module.exports = function(grunt) {
//...rest of grunt file
}
путь более обслуживаемой (и способ более гибкий), чем разбор «переменная =» из сырой строки с RegEx. Вы не ограничены только JSON, но любой JavaScript.
Просто предвосхитить любые проблемы у вас есть о повторном использовании файла JS для нескольких целей (так module
не может быть определена в somefile.js
, когда это не в среде узла), вы можете сделать это:
//somefile.js
var someJSONObject = {
SOME_KEY: "VALUE";
};
//CommonJS export syntax
//don't do anything if module.exports is not in scope
if (typeof module === "object" && typeof module.exports === "object") {
module.exports = someJSONObject;
}
Ну, 'var test = {" foo ":" bar "};' не JSON, это JavaScript. Я не уверен, чего вы пытаетесь достичь. –
Я пытаюсь прочесть объекты в моей задаче для задания. –
Когда я удаляю назначение переменной, он совместим с grunt.file.readJSON, поэтому я бы рассмотрел синтаксис очень близко здесь. Я просто хочу, чтобы импорт работал, когда есть назначение переменной для объекта, а не вручную удаление назначений переменных. –