mirror of
https://github.com/moodle/moodle.git
synced 2025-01-17 21:49:15 +01:00
ffac002f0d
This commit adds a new Grunt task which generates a jsconfig.json file. This file is described at https://code.visualstudio.com/docs/languages/jsconfig and can be used to configure vscode and other similar editors to understand our module loading. This task is an optional task for Grunt and can be run with: npx grunt jsconfig The file is git-ignored and will not affect normal usage.
54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
/* jshint node: true, browser: false */
|
|
/* eslint-env node */
|
|
|
|
/**
|
|
* @copyright 2022 Andrew Lyons <andrew@nicols.co.uk>
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
const configuration = {
|
|
compilerOptions: {
|
|
baseUrl: ".",
|
|
paths: {
|
|
},
|
|
target: "es2015",
|
|
allowSyntheticDefaultImports: false,
|
|
},
|
|
exclude: [
|
|
"node_modules",
|
|
],
|
|
include: [],
|
|
};
|
|
|
|
module.exports = (grunt) => {
|
|
const handler = () => {
|
|
const jsconfigData = Object.assign({}, configuration);
|
|
|
|
const path = require('path');
|
|
const {fetchComponentData} = require(path.join(process.cwd(), '.grunt', 'components.js'));
|
|
|
|
const componentData = fetchComponentData().components;
|
|
for (const [thisPath, component] of Object.entries(componentData)) {
|
|
jsconfigData.compilerOptions.paths[`${component}/*`] = [`${thisPath}/amd/src/*`];
|
|
jsconfigData.include.push(`${thisPath}/amd/src/**/*`);
|
|
}
|
|
|
|
grunt.file.write('jsconfig.json', JSON.stringify(jsconfigData, null, " ") + "\n");
|
|
};
|
|
grunt.registerTask('jsconfig', 'Generate a jsconfig configuration compatible with the LSP', handler);
|
|
};
|