咕哝浏览别名映射两个层次
grunt-browserify aliasMapping two levels deep
所以我有一个文件目录,其中两个文件直接在文件夹中:
views/view1.js
views/view2.js
但是一个嵌套更深一层的
views/other/view3.js
我想使用别名映射用grunt-browserify
编译这些,这样我就可以要求它们为:
require('view1')
require('view2')
require('other/view3')
所以我在grunt-browserify
配置中设置了简单的映射:
{
expand: true,
cwd: 'views/',
src: ['**/*.js'],
dest: ''
}
前两个文件require()
很好,但找不到最后一个。我使用的别名映射看起来只有一个层次的深度。我怎样才能让它降到我给它的每一个级别?
整个aliasMappings
选项似乎都坏了,因为我甚至无法让他们的映射示例正常工作。我发现了另一个使用aliasify
的解决方案(对byronwong的这段代码表示赞扬)。这就是我的工作Gruntfile
的样子:
var util = require('util');
var aliasify = require('aliasify');
module.exports = function(grunt) {
// takes grunt-browserify aliasMappings config and converts it into an aliasify config.
function configureAliasify(aliasMappings) {
var expandedAliases = {};
aliases = util.isArray(aliasMappings) ? aliasMappings : [aliasMappings];
aliases.forEach(function (alias) {
grunt.file.expandMapping(alias.src, alias.dest, {cwd: alias.cwd}).forEach(function(file) {
var expose = file.dest.substr(0, file.dest.lastIndexOf('.'));
expandedAliases[expose] = './' + file.src[0];
});
});
return require('aliasify').configure({
aliases: expandedAliases
});
}
// Create alias mappings with aliasify
var aliasMappings = configureAliasify({
cwd: 'views',
src: ['**/*.js'],
dest: ''
});
// Project configuration.
grunt.initConfig({
browserify: {
dist: {
files: {
'build/app.js': ['client/entry.js']
},
options: {
debug: true,
transform: [aliasMappings]
}
}
}
});
// Load the plugin that provides the "browserify" task.
grunt.loadNpmTasks('grunt-browserify');
// Default task(s).
grunt.registerTask('default', ['browserify']);
};
client/entry.js
文件现在可以要求views
目录中存在的所有文件作为别名。
请注意,虽然上述解决方案有效,但aliasify
不再保持为有利于tagify
。然而,tagify
与aliasify
有着根本的不同,因此不确定使用该库的解决方案会是什么样子。
更新:经过更多的修改,我意识到没有必要使用aliasify
或tagify
。所需要的基本上是一个获取aliasMapping
并返回alias
数组的映射函数。这或多或少是grunt-browserify
对aliasMapping
应该做的,但由于某种原因,它不起作用。这就是我最终得到的:
var util = require('util');
module.exports = function(grunt) {
// Takes grunt-browserify aliasMappings config and converts it into an alias array
function aliasMappingsToAliasArray(aliasMappings) {
var aliasArray = [];
aliases = util.isArray(aliasMappings) ? aliasMappings : [aliasMappings];
aliases.forEach(function (alias) {
grunt.file.expandMapping(alias.src, alias.dest, {cwd: alias.cwd}).forEach(function(file) {
var expose = file.dest.substr(0, file.dest.lastIndexOf('.'));
aliasArray.push('./' + file.src[0] + ':' + expose);
});
});
return aliasArray;
}
// Project configuration.
grunt.initConfig({
browserify: {
dist: {
files: {
'build/app.js': ['client/entry.js']
},
options: {
debug: true,
alias: aliasMappingsToAliasArray({
cwd: 'shared',
src: ['**/*.js'],
dest: ''
})
}
}
}
});
// Load the plugin that provides the "browserify" task.
grunt.loadNpmTasks('grunt-browserify');
// Default task(s).
grunt.registerTask('default', ['browserify']);
};
aliasMapping
配置现在在v2测试版中按预期工作。
您可以使用npm install grunt-browserify@2
进行安装
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 组合两个javascript函数
- 如何使用offer/answer交换来自两个对等连接的流
- jsf中两个字符串的颜色代码差异
- 加载两个具有相同父密钥名称的json文件
- 在Qualtrics中,介绍如何动态连接两个滑块
- 访问$.ajax()函数中的两个不同数组
- 如何在three.js上添加两个向量
- 如何在datetimepicker中使用两个验证器
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 两个层次的手风琴除了第一次不起作用
- 咕哝浏览别名映射两个层次
- 骨干.js两个层次的集合