如何处理 angular 中的文件版本 2
How to handle version of files in angular 2
在当前 angular 应用程序 1.x 中,我使用自定义模块和文件加载器,它允许我向文件 url 添加后缀 (v=x.y) .浏览器将基于该后缀从缓存中加载文件或从服务器中获取文件。如:
'app/user/user.services.js?v=1.2',
'app/order/order.services.js?v=1.3',
版本号(1.2、1.3...)由我的加载程序在每个用户会话中动态设置,每个文件的版本号可以不同。
关于 angular 2,使用 SystemJs,我如何为我的应用程序中使用的 SystemJs 导入的文件定义版本号。
建议我一些其他装载机来解决这个问题,非常感谢!
经过一轮工作,我找到了解决方案。
在运行 system.config.js之前,我会通过请求从服务器加载一个版本号。我们在启动时有应用程序的版本号。
var vQuery = '?v=1.3';
然后我可以在systemjs中通过配置包为每个请求添加一个前缀。只需 为 defaultExtension
的值添加前缀
packages: {
app: {
main: './main',
defaultExtension: 'ts' + vQuery
}
}
之后,当SystemJS加载文件时,它会自动为文件添加一个前缀(?v=1.3) url 例如:
/src/components/todoList.ts?v=1.3
/src/components/newTodo.ts?v=1.3
我们还可以为每个包添加不同的版本号,方法是为每个包生成一个配置并将其动态添加到 SystemJS。配置代码如下:
var ngPackageNames = ['all','of your','packages'];
// list of configs for each package
var packages = [];
//method to find version for each package
getVersionOfFile: function(package){
// find version of package and return
return 'v=' + 'version of this package';
}
// generate config
ngPackageNames.forEach(function(package){
// handle config for this package
packages[pkgName] = { main: packageFile, defaultExtension: 'ts' + getVersionOfFile(package) };
});
// at last, add config for all packages to SystemJS
var config = {
map: map,
packages: packages
}
System.config(config);
这应该在构建时完成——使用类似 https://www.npmjs.com/package/gulp-rev-replace
的东西
我建议使用文件哈希对文件进行版本控制——因为它只会导致实际更改过的文件在浏览器中重新缓存。
在当前 angular 应用程序 1.x 中,我使用自定义模块和文件加载器,它允许我向文件 url 添加后缀 (v=x.y) .浏览器将基于该后缀从缓存中加载文件或从服务器中获取文件。如:
'app/user/user.services.js?v=1.2',
'app/order/order.services.js?v=1.3',
版本号(1.2、1.3...)由我的加载程序在每个用户会话中动态设置,每个文件的版本号可以不同。
关于 angular 2,使用 SystemJs,我如何为我的应用程序中使用的 SystemJs 导入的文件定义版本号。
建议我一些其他装载机来解决这个问题,非常感谢!
经过一轮工作,我找到了解决方案。 在运行 system.config.js之前,我会通过请求从服务器加载一个版本号。我们在启动时有应用程序的版本号。
var vQuery = '?v=1.3';
然后我可以在systemjs中通过配置包为每个请求添加一个前缀。只需 为 defaultExtension
的值添加前缀packages: {
app: {
main: './main',
defaultExtension: 'ts' + vQuery
}
}
之后,当SystemJS加载文件时,它会自动为文件添加一个前缀(?v=1.3) url 例如:
/src/components/todoList.ts?v=1.3
/src/components/newTodo.ts?v=1.3
我们还可以为每个包添加不同的版本号,方法是为每个包生成一个配置并将其动态添加到 SystemJS。配置代码如下:
var ngPackageNames = ['all','of your','packages'];
// list of configs for each package
var packages = [];
//method to find version for each package
getVersionOfFile: function(package){
// find version of package and return
return 'v=' + 'version of this package';
}
// generate config
ngPackageNames.forEach(function(package){
// handle config for this package
packages[pkgName] = { main: packageFile, defaultExtension: 'ts' + getVersionOfFile(package) };
});
// at last, add config for all packages to SystemJS
var config = {
map: map,
packages: packages
}
System.config(config);
这应该在构建时完成——使用类似 https://www.npmjs.com/package/gulp-rev-replace
的东西我建议使用文件哈希对文件进行版本控制——因为它只会导致实际更改过的文件在浏览器中重新缓存。