我需要在我的.js和.less文件之间共享一个常量。我的解决方案包含两个步骤:有没有办法多次要求一个文件作为不同的模块
- 创建一个扩展名为.const的独立文件,其中包含所有共享常量。它具有JavaScript模块语法,并将正常执行。
- 根据需要此源的文件的扩展名创建一个将更改源代码的加载程序。所以,如果,例如,要求.less文件,然后代码转换为较少的表达式
但我不找到从一个源文件创建两个模块的方式取决于需要的模块。
有条件装载机我的源代码,该做的东西:
module.exports = function(content, sourceMap) {
var _ = require('lodash');
var loaderUtils = require('loader-utils');
var reasonResource = this._module.reasons[0].module.resource;
var reasonResourceExtension = _.last(reasonResource.split('.'));
switch (reasonResourceExtension)
{
case 'js':
case 'const':
var query = loaderUtils.parseQuery(this.query);
if(query.cacheable && this.cacheable)
this.cacheable();
return content;
break;
case 'less':
var consts = this.exec(content, this.resource);
return JSON.stringify(consts);
break;
default:
throw new Error('Not supported import .const modules from ' + reasonResourceExtension.green);
}
};