我有以下代码(用typescript编写,但可以是任何JS变体):
this.http.get('configs/config.json').subscribe(...);
Run Code Online (Sandbox Code Playgroud)
基本上,我正在从本地json文件加载配置.我想在文件上实现缓存清除.虽然我可以通过添加哈希后缀来设置我的webpack来修改json文件,但我还需要修改所有引用这些文件的源文件.string-replace-loader可能会做这个工作,但这样做有点奇怪.
此外,在某些情况下,我无法访问使http调用资源的代码行(第三方插件,例如,加载类似的翻译,i18n/[lang].json因此我不能直接修改代码和/或名称(因此内容) hash)仅在运行时才知道.
有没有类似URL重写的webpack可以解决这个问题?
我已经使用Angular 2(RC.1)和系统JS建立了一个种子项目.我想为生产创建一个静态单个包,并捆绑除我自己的开发代码之外的所有东西.在使用systemjs之前,这是我过去的正常流程.与gulp-jspm/systemjs-builder捆绑后,捆绑文件大于2 MB(源)或1.2 MB(缩小).由于这看起来太大了,我使用普通的jspm CLI进行了双重检查,但文件大小相同.
使用的命令是开发模式:
jspm bundle app/bootsrap - [path/to/app/**/*] mybundlename.js --inject
Run Code Online (Sandbox Code Playgroud)
或者用于生产:
jspm bundle app/bootstrap mybundlename.js
Run Code Online (Sandbox Code Playgroud)
如果我想要在带宽有限的移动浏览器上运行我的网络应用程序,那么生产1.2 MB的文件似乎太大了.特别是因为这是一个几乎没有我的代码的捆绑(只是一个引导文件和一个主应用程序组件).对于相当大的企业应用程序,我的Angular 1.5应用程序包通常大约为700kB.
通过查看bundle本身,我意识到捆绑了540个文件.我很确定我不需要其中的大多数.
完整的config.js可以在这里找到:https://plnkr.co/edit/BhYy5Pu1QbmYJ7Ph5rBO.
最后我的问题:
我们的团队有人在 Mac 和 Windows 上工作。到目前为止,我们已将 git 自动行结束设置为true(在 OSX 上)和input(在 Windows 上)。它工作得很好,除非存在合并冲突。在这种情况下,SourceTree 和 GitKraken 都会搞乱 Windows 上的合并,因为它们将所有以 LF 结尾的行视为一行。
我们所有人都应该使用相同的值core.autocrlf(在这种情况下是哪个?)还是针对特定应用程序有一些修复?
注意:目前,当行尾混乱时,我们会进行手动合并,但这很痛苦。另外,设置core.autocrlf为false也不是一个选项,因为配置文件中的错误行结尾会导致 Linux 上的构建崩溃。
有没有办法在Angular 2/4中测试NgModule(例如test forRoot和forChild)?所有的教程和文档仅涉及组件,服务,管道和指令。
我有一个功能相当复杂的模块,想对其进行测试。
我们有一个使用Angular 4和webpack构建的应用程序,当使用Protractor针对localhost运行端到端测试时,我们遇到了奇怪的超时/减速.
如果我们对服务器上部署的应用程序运行它,则所有测试都通过 如果我们针对本地构建运行它,则测试会明显变慢并且由于超时而随机失败.
只是提到:
任何想法可能是什么问题?
被Object.freeze建议在打字稿或有确保对象保持不变的其他方式?
由于const只有守卫实例,而不是属性,这显然不是我正在寻找的答案.
我有一个相当标准的项目水合函数,它会抛出“ RangeError:无效的数组长度”。不幸的是,这种情况在生产中很少发生,因此很难捕获输入参数。
这是函数:
function setProgress(items: SomeType[], id: string, someProperty: string) {
const index = items.findIndex(item => item.id === id);
const newItem: SomeType = {...items[index], someProperty };
return [...items.slice(0, index), newItem, ...items.slice(index + 1);
}
Run Code Online (Sandbox Code Playgroud)
这就是转译为的内容(非丑化):
function setProgress(items, id, someProperty) {
var index = items.findIndex(function(e) {
return items.id === id
}),
newItem = Object.assign({}, items[index], {
someProperty: someProperty
});
return items.slice(0, index).concat([newItem], items.slice(index + 1));
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用不同的值,但无法重现此错误。
知道是什么以及如何导致这种情况吗?
我想将规则变成@angular-eslint/no-host-metadata-property警告而不是错误,但我不知道如何配置它。
错误消息如下所示:
使用@HostBinding或@HostListener而不是元
host数据属性(https://angular.io/styleguide#style-06-03)@angular-eslint/no-host-metadata-property
这是我eslintrc.json在根级别的文件中尝试过的:
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
{
"files": ["*.ts"],
"rules": {
....
"@angular-eslint/no-host-metadata-property": "warn",
}
"plugins": ["@angular-eslint/eslint-plugin", "eslint-plugin-import", "@typescript-eslint"]
}
}
Run Code Online (Sandbox Code Playgroud)
这是针对 Angular 12 项目的。我运行 nx 迁移命令将 linting 规则从 tslint 转换为 eslint。我怎样才能推翻这个规则?
我有一个运行包裹打包器的简单 JS 文件:
const Bundler = require('parcel-bundler');
(async () => {
const bundler = new Bundler('./src/index.html', {}); // options omitted for simplicity
await bundler.bundle();
})();
Run Code Online (Sandbox Code Playgroud)
我从 CLI 运行它:
node ./build.js
Run Code Online (Sandbox Code Playgroud)
虽然 bundler 工作正常并在dist文件夹中创建捆绑文件,但该过程永远不会退出,而是保留在异步循环中。
我尝试添加then回调或使用返回,但没有任何帮助。使用process.exit()当然会停止这个过程,但也会限制我在 CI 中链接这个命令,这是整个目的。
我究竟做错了什么?
angular ×5
javascript ×3
node.js ×2
typescript ×2
webpack ×2
array-splice ×1
arrays ×1
async-await ×1
bundler ×1
caching ×1
eslint ×1
git ×1
gulp ×1
jspm ×1
macos ×1
module ×1
nrwl-nx ×1
parceljs ×1
protractor ×1
systemjs ×1
windows ×1