Typescript / ES6:使用绝对路径导入src文件

时间:2016-01-07 09:41:27

标签: typescript

在我的一个文件中,我用

导入另一个commonjs模块
import * as at from '../../../at-angular'

我宁愿做

import * as at from 'fv/at-angular'

fv是我的src目录。所以我的app文件夹结构如下所示:

- src
  - at-angular.ts
  - core
    - services
  ....

我可以以某种方式启用打字稿,使fv指向src吗?

4 个答案:

答案 0 :(得分:1)

TypeScript 1.8(尚未发布)将具有路径映射功能:

  

路径映射

     

有时模块不直接位于baseUrl下。它是   可以控制在这种情况下如何使用计算位置   路径映射。使用以下JSON指定路径映射   结构:

{
    "paths": {
        "pattern-1": "substitution" | ["list of substitutions"],
        "pattern-2": "substitution" | ["list of substitutions"],
        ...
        "pattern-N": "substitution" | ["list of substitutions"]
    }
}
     

模式和替换是可以具有零或一的字符串   asteriks(' *')。解释模式和替换   将在决议处理部分中进行描述。

https://github.com/Microsoft/TypeScript/issues/5039

这可能就是你要找的东西。

答案 1 :(得分:1)

我能够在我的webpack2设置上获得绝对路径导入。这就是我所做的你必须设置tsconfig.json以支持它。以下是一个示例:https://medium.com/@timwong/typescript-with-webpack2-how-to-do-import-with-absolute-path-f33b1826d330

以下是我帖子中的示例。

Webpack2 Resolve

/** 
* Assuming the following project structure
*   /src
*     /app
*       /services
*       /models
*     /node_modules
*     .webpack.config.js
*     tsconfig.json
*/
var path = require('path');
module.exports = {
  module: { ... },
  devtool: '...',
  resolve: {
    modules: [
      path.resolve('./node_modules'),
      path.resolve('./app')
    ]
  }

通过定义resolve.modules,我们指示Webpack使用这些路径作为根文件夹搜索(a.k.a resolve)组件。 TypeScript配置

好的,现在Webpack很不错;那么TypeScript呢?如果您使用的是Atom或VSCode等编辑器,您可能会看到突出显示的错误,指出TypeScript无法找到模块。 这是因为TypeScript不知道此根模块设置。我们也必须在tsconfig.json中提供这些信息。

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "*": [
        "*",
        "app/*"
      ]
    }
}

通过定义paths对象和baseUrl,我们指示TypeScript编译器在解析import语句时查看app文件夹。 希望这个简单的示例有助于在第一次使用TypeScript和Webpack2时解锁任何遇到此配置问题的人。

答案 2 :(得分:0)

我已经为源代码创建了一个要点,以使用绝对路径名或tsconfig.json中定义的任何其他路径 它适用于Browserify + Watchify + Tsify也适用于Gulp-typescript。

https://gist.github.com/azarus/f369ee2ab0283ba0793b0ccf0e9ec590

它改变路径名称& baseUrl在tsconfig.json中定义了它们的相对路径名。 享受!

答案 3 :(得分:0)

这是我的设置,可以正常工作。只需构建即可,当您想使用节点在dist目录中运行代码时,必须传递NODE_PATH = dist。

将此脚本添加到package.json脚本中,然后运行它以测试一切正常。

"build-test": "NODE_PATH=dist node --inspect dist"