我的项目中有一个.js文件,其代码如下:
var API_ENDPOINT = 'http://example.com:8000';
var api = new RemoteApi(API_ENDPOINT);
其中API_ENDPOINT
在dev / prod环境中发生变化
它不是一个js应用程序,主要是一个经典的服务器端应用程序(Django),有一些客户端的内容。
我开始使用Grunt来管理客户端依赖关系和想法,在Grunt配置中指定API_ENDPOINT
并以某种方式"嵌入"是个好主意。它进入.js文件。
但是我找不到用Grunt破坏文件的方法。
生成的.js文件将在浏览器envorenment中运行,因此我需要在source.js文件中嵌入我的API_ENDPOINT
变量或创建一个单独的.js文件,如
var API_ENDPOINT = '...';
我将在script.js
之前加入(另外,我希望"将这个变量嵌入我的django' s settings.py
)
答案 0 :(得分:6)
对于客户端js,我会将所有配置提取到config.json
文件中,并使用grunt-replace注入代码。
文件夹结构可能如下所示:
- Gruntfile
- config.json
- client/
- src/
- script.js
- dist/
<强> config.json 强>
{
"API_ENDPOINT": "http://example.com:8000"
}
<强>的src /的script.js 强>
var API_ENDPOINT = '@@API_ENDPOINT'; // everything starting with @@ will be replaced by grunt-replace by default
var api = new RemoteApi(API_ENDPOINT);
<强> Gruntfile 强>
grunt.initConfig({
replace: {
dist: {
options: {
patterns: [{
json: require('config.json')
}]
},
files: [
{expand: true, flatten: true, src: ['./client/src/*.js'], dest: './client/dist/'}
]
}
}
});
一些细节:
client/dist