整個aliasMappings
選項似乎中斷,因爲我甚至不能讓他們的映射示例正常工作。我發現另一個解決方案,使用aliasify
(榮譽byronwong爲this code)。這是怎麼我的工作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
有根本的不同,因此不太確定使用該lib的解決方案的樣子。
更新:經過一番搗鼓之後,我意識到沒有必要使用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']);
};
'**/*安裝。js'應該工作,你可以用'-v'標誌運行呢?也許給我們提供你正在使用的軟件包的版本號,包括節點。 –