如何修改服务工作者文件而不用 ng build --prod 覆盖它

How to modify service worker file without overwriting it with ng build --prod

我想更新我的 service worker 以便我可以接收通知,问题是每次我 运行 ng build --prod 它都会覆盖我的文件。

我使用 Angular CLI 创建了 service worker。如果我理解正确,我需要 运行 ng build --prod 脚本来更新要部署的 dist 文件夹。

我更新了 dist 文件夹中的 ngsw-worker.js,但是当我 运行 构建命令时它被覆盖了。我还必须每次手动将 Web.config 添加到 dist 文件夹。如何在构建中进行这些更改?

构建完成后,您应该复制自己选择的 ngsw-worker.js

请注意,这意味着如果 angular-pwa 升级,您的构建将不稳定,您可能无法获得错误修复或其他改进,因为您没有更新 "your" 文件。

因此包含并安装 fs-extra:

npm i fs-extra --save-dev

该包应该出现在您的 devDependencies 中:

"fs-extra": "^8.0.1",

然后您应该将文件复制到脚本中(将脚本保存到新目录)并将其命名为 move_file.js 或类似名称:

const fs = require('fs-extra');
fs.copy('./src/app/my-ngsw-worker.js', './dist/ngsw-worker.js', err => {
  if (err) {
    return console.error(err)
  } else {
    console.log('success!')
  }
});

最后在使用 npm 命令构建 ng 之后调用它: 节点 scripts/move_file.js

这会将生成的替换为您的。