我目前正在开发一个TypeScript应用程序,它由多个用TypeScript编写的 node 模块组成,安装在node_modules
目录中.
在继续之前,我想指出,我使用的是TypeScript 2.0,如果需要的话,我并不反对使用2.1开发版本.我只是想让它运转起来.
每个 node 模块的 struct 大致如下:
dist/
es2015/
index.js
utils/
Calculator.js
Calculator.d.ts
Date.js
Date.d.ts
Flatpack.js
Flatpack.d.ts
src/
index.ts
utils/
Calculator.ts
Date.ts
Flatpack.ts
dist文件夹是生成的源,使用my tsconfig.json
文件中的outDir
配置此路径.我还将package.json
中的main
属性配置为dist/es2015/index.js
.
Important things to note:
- 在我的项目中,我使用
moduleResolution
型node
- 我使用的是TypeScript 2.0
- 我不是问如何从包中导入文件.我通过Npm安装软件包,然后通过
packagename/
从使用此模块的应用程序中导入.
现在是我的问题.从本模块导入文件时,我希望能够做到:
import {Sin, Cos, Tan} from "common-utils/utils/Calculator";
但是,该文件无法解析为dist/es2015/utils
目录.理想情况下,我希望我的导入从这个特定的dist
文件夹解析,而不是从根目录解析,这似乎是正在发生的事情.
上述导入需要按以下方式编写才能正常工作:
import {Sin, Cos, Tan} from "common-utils/dist/es2015/utils/Calculator";
然而,每次写dist/es2015
字并不理想,它只会让一些进口看起来很长.有没有办法配置我的模块以解析到dist/es2015
目录?我不想在我的项目中加入覆盖,理想情况下,每个模块都会指定从何处解析文件.
如果在创建与Jspm一起使用的插件/模块时,您仍然不确定我在Jspm中问的是什么(如果这让人困惑,我很抱歉),您可以为模块指定package.json
的内部,如下所示:
"jspm": {
"registry": "npm",
"jspmPackage": true,
"main": "my-module",
"format": "amd",
"directories": {
"dist": "dist/amd"
},
我想在TypeScript中找到与上面相同的版本(如果存在的话).一个映射指令,因此当最终用户运行npm install my-cool-package
,然后在他们的应用程序中try 导入某些内容时,所有导入默认解析到commonjs
目录(上面的Jspm示例使用amd,但前提相同).
这是可能的还是我误解了什么?我知道最新版本中添加了一些新的路径映射功能,但关于使用它们的文档几乎不存在.