我正在使用AngularJS构建一个Ionic App,我有一个gulp任务应该替换文件中的数据。该任务执行时没有错误,但它不会替换它要替换的数据。它没有被执行。
gulp.task('replace', function () {
// Get the environment from the command line
var env = args.env || 'localdev';
// Read the settings from the right file
var filename = env + '.json';
var settings = JSON.parse(fs.readFileSync('./config/' + filename, 'utf8'));
console.log(settings.apiUrl)
// Replace each placeholder with the correct value for the variable.
gulp.src(paths.replace)
.pipe(replace({
patterns: [
{
match: 'apiUrl',
replacement: settings.apiUrl
}
]
}))
.pipe(gulp.dest('./js/services'));
console.log("here")
});
js / constants.js文件
angular.module('loanstreet.constants',[])
.constant('apiUrl', '@@apiUrl');
localdev.json
{
"apiUrl":"http://10.0.3.2:3000"
}
在替换apiUrl值后,它应该创建并发送到目标.js / services / constants.js,但它也不会创建它。
任何建议,因为我老实说无法看到代码有什么问题。任何帮助赞赏。
答案 0 :(得分:1)
假设您使用gulp-replace,您使用的参数是错误的。
应为replace(pattern, replacement)
此外,我认为您的示例中的match
值是错误的。它将替换键和值。你需要匹配器中的@@。
将其更改为
.pipe(replace('@@apiUrl', settings.apiUrl))
如果您需要替换多项内容,请将更多来电链接到replace()
.pipe(replace('@@apiUrl', settings.apiUrl))
.pipe(replace('@@another', 'foo'))
.pipe(replace('@@more', 'bar'))
答案 1 :(得分:0)
我相信你应该换行:
gulp.src(paths.replace)
要:
gulp.src('./js/constants.js')
或以其他方式告诉我们paths.replace
此时的价值。
答案 2 :(得分:0)
假设使用了gulp-replace-task
,我得到的结果是,任务执行没有错误,但是没有发生数据替换。
env: windows
node: v10.14.1
gulp: 3.9.1
最后,我求助于使用applause.
因此,上面的代码将类似于:
applause = require('applause'),
....
var settings = JSON.parse(fs.readFileSync('./config/' + filename, 'utf8'));
var options = {
patterns: [
{
match: 'apiUrl',
replacement: settings.apiUrl
}
]
};
var applauseRunner = applause.create(options);
var result = applauseRunner.replace(content);
// Do something with the result.content (i.e. pipe to stream)
希望这对某人有帮助。