Заменить на регулярное выражение для gulp-replace
Я использую замену gulp, чтобы заменить полное имя пути другим именем, сопоставляя начальную и конечную строки
пример
вход:
src/app/Client/Home/home.service.js
выход
dist/Home/home.service.min.js
.state('masterPage.blogArticle', {
url: "/article/:postId",
templateUrl: "src/app/Client/Blog/article/index.html",
controller: "articleCtrl",
controllerAs: 'vm',
resolve: {
deps: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load({
name: 'competitiveClient',
insertBefore: '#ng_load_plugins_before', // load the above css files before a LINK element with this ID. Dynamic CSS files must be loaded between core and theme css files
files: [
'src/app/Client/Blog/article/article.service.js',
'src/app/Client/Blog/article/article.controller.js'
]
});
}]
}
})
Здесь я хочу заменить путь к файлу.js указанным выше выводом во всех состояниях.
gulp.task('templates', () => {
gulp.src(['dist/client/app/js/app.config.min.js'])
.pipe(replace(/^(src\/app\/Client\/)(.*)(.js)$/g, 'dist/client/app'))
.pipe(replace(/.js/g, '.min.js'))
.pipe(gulp.dest('dist/client/app/js/'));
});
но он не работает, он не находит подходящего пути, так что если у кого-то есть идея, чтобы решить его. заранее спасибо.
1 ответ
Пытаться:
gulp.task('templates', () => {
return gulp.src(['dist/client/app/js/app.config.min.js'])
// need the matching groups 2 and 3 as well, and the m flag
//.pipe(replace(/^(src\/app\/Client\/)(.*)(.js)$/gm, 'dist/$2$3'))
.pipe(replace(/(src\/app\/Client\/)(.*)(.js)/g, 'dist/$2$3'))
// escape the .
.pipe(replace(/\.js/g, '.min.js'))
.pipe(gulp.dest('dist/client/app/js/'));
});
src/app/Client/Home/home.service.js
==>
dist/Home/home.service.min.js
[И вы захотите добавить туда ответное заявление, которое я добавил.]
Согласно этому ответу,gulp-replace
примет обратный вызов в качестве второго аргумента. Единственная уловка в том, что полное совпадение будет первым параметром, все совпадающие группы будут аргументом со второго по n, затем есть еще пара.
НАПРИМЕР
replace("my-(.*)", (full, capture) => {return "string: " + capture})