Как контролировать, как wiredep генерирует путь к файлу bower и как контролировать, какие файлы добавляются / удаляются
Мое приложение имеет следующий каталог
app -> appName -> index.html (js,css)
и по какой-то причине эта папка-обертка appName испортила проводной
{ dest: '.tmp/concat/scripts/vendor.js',
src:
[ '../bower_components/es5-shim/es5-shim.js',
'../bower_components/angular/angular.js',
'../bower_components/json3/lib/json3.js',
'../bower_components/angular-resource/angular-resource.js',
'../bower_components/angular-cookies/angular-cookies.js',
'../bower_components/angular-sanitize/angular-sanitize.js',
'../bower_components/angular-animate/angular-animate.js',
'../bower_components/angular-touch/angular-touch.js',
'../bower_components/angular-route/angular-route.js' ] },
это то, что было бы создано, если каталог выглядит следующим образом
app -> index.html(js,css)
{ dest: '.tmp/concat/scripts/vendor.js',
src:
[ 'bower_components/es5-shim/es5-shim.js',
'bower_components/angular/angular.js',
'bower_components/json3/lib/json3.js',
'bower_components/angular-resource/angular-resource.js',
'bower_components/angular-cookies/angular-cookies.js',
'bower_components/angular-sanitize/angular-sanitize.js',
'bower_components/angular-animate/angular-animate.js',
'bower_components/angular-touch/angular-touch.js',
'bower_components/angular-route/angular-route.js' ] },
и wiredep изменяет содержимое сценария index.html и как я могу контролировать этот поток? иногда это убирает угловую дезинфекцию из скрипта [src]
3 ответа
Вы должны использовать опцию замены wiredep:
wiredep(
{
fileTypes: {
html: {
replace: {
js: '<script src="/app/appName/{{filePath}}"></script>'
}
}
}
})
Будет генерировать:
<script src="/app/appName/bower_components/angular/angular.js"></script>
Это моя настройка gulp (тот же принцип применим к Grunt, просто передайте ему те же параметры).
gulp.task('wiredep' , function()
{
return gulp.src('./app/index.html')
.pipe(wiredep({
'ignorePath': '../'
}))
.pipe(gulp.dest('./app'));
});
Вы можете посмотреть исходный код wiredep в lib/inject-dependencies.js (строка:80~85)
map(function (filePath) {
return $.path.join(
$.path.relative($.path.dirname(file), $.path.dirname(filePath)),
$.path.basename(filePath)
).replace(/\\/g, '/').replace(ignorePath, '');
}).
Он просто заменяет бит, который вы поставляете (или нет, если вы его не даете).
Надеюсь, это поможет.
Вы пытались добавить cwd
к options
блок?
Пример:
// Automatically inject Bower components into the app
wiredep: {
options: {
cwd: 'app/appName'
}
....
}