如何将TS路径映射与Firebase Cloud函数一起使用

时间:2018-06-25 10:48:42

标签: firebase google-cloud-functions

如何将TS路径映射与Firebase Cloud函数一起使用? 我尝试没有成功:

"baseUrl": ".",
  "paths": {
    "@custom-path/*": ["src/utils/*"],
    "@other-path/*": ["../other/path/*"]
  }

4 个答案:

答案 0 :(得分:0)

最后,我可以使用module-alias NPM软件包来做到这一点。

  1. 将其安装为非开发依赖项:yarn add module-alias @types/module-alias
  2. 创建文件fixTsPaths.ts或诸如此类的内容:
import * as ModuleAlias from 'module-alias';

ModuleAlias.addAliases({
    'common': __dirname + '/../../../common',
});

这是关于路径/../../../common的窍门:在我的情况下,该文件夹位于functions之外,Typescript在构建过程中复制文件夹结构,因此这可能就是https://github.com/dividab/tsconfig-paths被设置为开箱即用因此,在每种情况下都需要检查此路径并找到合适的'..'计数:)

  1. 最后将此文件导入您的index.ts最顶部:
import './fixTsPaths';

希望这会有所帮助!

答案 1 :(得分:0)

问题是no-implicit-dependencies: true上的规则tslint.json。您可以传递其他参数以将自定义路径列入白名单:

"no-implicit-dependencies": [true, ["@custom-path", "@other-path"]],

答案 2 :(得分:0)

我可以使用@zerollup/ts-transform-paths NPM软件包来做到这一点。

  1. 将@ zerollup / ts-transform-paths安装为dev依赖项:yarn add -D @zerollup/ts-transform-paths
  2. 按照webpack + ts-loader的配置进行设置。
const tsTransformPaths = require('@zerollup/ts-transform-paths');

module.exports = {
  ... // other config
  module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        loader: 'ts-loader',
        options: {
          getCustomTransformers: (program) => {
            const transformer = tsTransformPaths(program);

            return {
              before: [transformer.before], // for updating paths in generated code
              afterDeclarations: [transformer.afterDeclarations] // for updating paths in declaration files
            };
          }
        }
      }
    ]
  }
};

详细了解:https://github.com/zerkalica/zerollup/tree/5aee60287647350215c81d0b2da5a30717d9dccb/packages/ts-transform-paths

答案 3 :(得分:0)

对于仍然与此问题斗争的任何人,但入口点文件(main.ts)顶部的以下代码。 tsconfig.json文件路径不在默认位置不要忘记调整

const tsConfig = require('../tsconfig.json');
const tsConfigPaths = require('tsconfig-paths');
tsConfigPaths.register({
    baseUrl: __dirname,
    paths: tsConfig.compilerOptions.paths,
});