小编Mir*_*nas的帖子

在webpack中缓存破坏JSON文件

我有以下代码(用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可以解决这个问题?

caching webpack angular

17
推荐指数
1
解决办法
928
查看次数

捆绑在systemjs中是否有意义

我已经使用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.

最后我的问题:

  • 在项目中使用systemJS时是否应该捆绑文件,或者我应该将它们分开并让systemJS处理延迟加载?
  • 如果建议捆绑,我如何创建一个合理大小的包,并且只包含我的应用实际依赖的文件?

gulp systemjs jspm angular

7
推荐指数
1
解决办法
814
查看次数

Mac 和 Windows 的 Git autocrlf 设置

我们的团队有人在 Mac 和 Windows 上工作。到目前为止,我们已将 git 自动行结束设置为true(在 OSX 上)和input(在 Windows 上)。它工作得很好,除非存在合并冲突。在这种情况下,SourceTree 和 GitKraken 都会搞乱 Windows 上的合并,因为它们将所有以 LF 结尾的行视为一行。

我们所有人都应该使用相同的值core.autocrlf(在这种情况下是哪个?)还是针对特定应用程序有一些修复?

注意:目前,当行尾混乱时,我们会进行手动合并,但这很痛苦。另外,设置core.autocrlffalse也不是一个选项,因为配置文件中的错误行结尾会导致 Linux 上的构建崩溃。

windows git macos core.autocrlf

6
推荐指数
1
解决办法
5070
查看次数

测试角度ngmodule

有没有办法在Angular 2/4中测试NgModule(例如test forRootforChild)?所有的教程和文档仅涉及组件,服务,管道和指令。

我有一个功能相当复杂的模块,想对其进行测试。

module angular

5
推荐指数
1
解决办法
2760
查看次数

针对localhost运行时,E2E测试超时

我们有一个使用Angular 4和webpack构建的应用程序,当使用Protractor针对localhost运行端到端测试时,我们遇到了奇怪的超时/减速.

如果我们对服务器上部署的应用程序运行它,则所有测试都通过 如果我们针对本地构建运行它,则测试会明显变慢并且由于超时而随机失败.

只是提到:

  • 浏览器中本地和部署应用程序的速度是一样的
  • 部署在服务器上的版本与本地计算机上的版本完全相同
  • 他们使用完全相同的后端端点
  • 我们尝试了webpack-dev-server,lite-server,http-server和superstatic,它们都给出了相同的结果
  • 元素的延迟设置为5秒
  • 页面本身立即加载,但内容加载随机延迟

任何想法可能是什么问题?

node.js protractor webpack angular

5
推荐指数
0
解决办法
151
查看次数

打字稿中的Object.freeze/Object.seal

Object.freeze建议在打字稿或有确保对象保持不变的其他方式?

由于const只有守卫实例,而不是属性,这显然不是我正在寻找的答案.

javascript typescript

5
推荐指数
2
解决办法
3029
查看次数

RangeError:数组扩展时数组长度无效

我有一个相当标准的项目水合函数,它会抛出“ 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)

我尝试过使用不同的值,但无法重现此错误。

知道是什么以及如何导致这种情况吗?

javascript arrays array-splice typescript

5
推荐指数
1
解决办法
5513
查看次数

Nx/Angular 项目的 Esslint 配置(无主机元数据属性)

我想将规则变成@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。我怎样才能推翻这个规则?

eslint angular nrwl-nx typescript-eslint

5
推荐指数
1
解决办法
3075
查看次数

从命令行运行parcel bundler 不会停止进程

我有一个运行包裹打包器的简单 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 中链接这个命令,这是整个目的。

我究竟做错了什么?

javascript bundler node.js async-await parceljs

2
推荐指数
1
解决办法
1223
查看次数