我有一個Gulp任務build:env
,它爲我的AngularJS應用程序生成一個app.constant.js
文件。但是,這些命令的結果與錯誤:模式定義中預期的替換屬性
/home/myuser/Documents/Projects/myapp/node_modules/gulp-replace-task/node_modules/applause/src/applause.js:82
throw new Error('Replacement attribute expected in pattern definition.
^
Error: Replacement attribute expected in pattern definition.
at /home/myuser/Documents/Projects/myapp/node_modules/gulp-replace-task/node_modules/applause/src/applause.js:82:15
at /home/myuser/Documents/Projects/myapp/node_modules/gulp-replace-task/node_modules/applause/node_modules/lodash/dist/lodash.js:2885:18
at forEach (/home/myuser/Documents/Projects/myapp/node_modules/gulp-replace-task/node_modules/applause/node_modules/lodash/dist/lodash.js:3297:15)
at Function.transform (/home/myuser/Documents/Projects/myapp/node_modules/gulp-replace-task/node_modules/applause/node_modules/lodash/dist/lodash.js:2884:35)
at normalize (/home/myuser/Documents/Projects/myapp/node_modules/gulp-replace-task/node_modules/applause/src/applause.js:43:12)
...etc
下面被使用,也從gulpfile.js
控制檯的輸出,你可以看到的設置是否正確加載的所有文件。
.env.json
{
"active": "dev"
}
environments.json
{
"demo": {
"frontend": {
"host": "app.demo.example.org",
"protocol": "https",
"port": "443",
"endpoint": null
},
"backend": {
"host": "api.demo.example.org",
"protocol": "https",
"port": "443",
"endpoint": {
"api": "api/"
}
},
"socket": {
"host": "socket.demo.example.org",
"protocol": "https",
"port": "443",
"endpoint": null
}
},
"dev": {
"frontend": {
"host": "app.dev.example.org",
"protocol": "https",
"port": "443",
"endpoint": null
},
"backend": {
"host": "api.dev.example.org",
"protocol": "https",
"port": "443",
"endpoint": {
"api": "api/"
}
},
"socket": {
"host": "socket.dev.example.org",
"protocol": "https",
"port": "443",
"endpoint": null
}
}
}
gulpfile.js(任務編譯:ENV)
gulp.task('build:env', function() {
var env = JSON.parse(fs.readFileSync('./.env.json', 'utf8'));
var environments = JSON.parse(fs.readFileSync('./.environments.json', 'utf8'));
var settings = environments[env.active];
console.log(settings);
// Replace each placeholder with the correct value for the variable.
return gulp.src('./config/app.constant.js')
.pipe(replace({
patterns: [
{
match: 'api',
replacement: settings.backend.host
},
{
match: 'assets',
replacement: settings.frontend.host
}
]
}))
.pipe(gulp.dest('./www/app'));
});
配置/ app.constant.js
(function() {
'use strict';
angular.module('myapp').constant('settings', {
'API': '@@api',
'ASSETS': '@@assets'
});
}());
的console.log(設置)
{
frontend:{
host:'192.168.1.112',
protocol:'http',
port:'8100',
endpoint:null
},
backend:{
host:'192.168.1.112',
protocol:'http',
port:'80',
endpoint:{
api:'api/'
}
},
socket:{
host:'192.168.1.112',
protocol:'http',
port:'3001',
endpoint:null
}
}
離子/的NodeJS /科爾多瓦/咕嘟咕嘟
[email protected]:~/Documents/Projects/frontend$ ionic info
Your system information:
Cordova CLI: 5.3.3
Gulp version: CLI version 3.8.11
Gulp local: Local version 3.9.0
Ionic Version: 1.1.0
Ionic CLI Version: 1.7.7
Ionic App Lib Version: 0.6.3
OS: Distributor ID: Ubuntu Description: Ubuntu 15.04
Node Version: v0.12.7
列表的依賴關係
[email protected]:~/Documents/Projects/frontend$ npm list --depth 0
[email protected] /home/myuser/Documents/Projects/frontend
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
遇到同樣的問題,你有沒有找到一個解決方案? –
還沒有不幸 –