在我的一个文件中,我用
导入另一个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
吗?
答案 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"