我有一个使用Node和Typescript的相当大的项目A。在项目A中,我有很多不同的模块,希望在另一个项目B中重用。
因此,我使用以下tsconfig.json构建了项目A:
name2
因此,所有文件都以这种方式内置到/ dist文件夹中:
要在另一个项目中使用这些moduleA和moduleB,请将以下内容添加到Project A中的package.json中:
class mainViewController: UIViewController {
//its inside a segment controller
@objc func Seg(sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
let firstViewController = SharedViewController()
print(self.name1.text!)
firstViewController.name2.text = self.name1.text!
self.addChild(firstViewController)
self.bottomContainer.addSubview(firstViewController.view)
firstViewController.didMove(toParent: self)
default:
let secondViewController = Shared2ViewController()
self.addChild(secondViewController)
self.bottomContainer.addSubview(secondViewController.view)
secondViewController.didMove(toParent: self)
}
我使用纱线工作区作为项目B中的程序包访问项目A。但是问题是,在新项目B中使用{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"declaration": true,
"outDir": "./dist",
"sourceMap": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"typeRoots": ["./node_modules/@types", "./modules/@types"]
},
"exclude": ["node_modules"]
}
时,我只能访问模块A?那么如何从ProjectA访问更多模块?
答案 0 :(得分:1)
将所有出口合并为一个index.ts
会为您解决这个问题吗?
package.json(projectA):
{
"main": "dist/index.js",
"typings": "dist/index.d.ts",
...
}
index.ts(projectA):
// Adjust the relative import paths
// and identifiers to your structure
export { ModuleA } from "./moduleA";
export { ModuleB } from "./moduleB";
projectB中的某些模块:
import {ModuleA, ModuleB} from 'projectA'
答案 1 :(得分:0)
我相信您正在寻找的是: https://nodejs.org/api/packages.html#packages_package_entry_points
目前尚不清楚 TypeScript 是否支持: https://github.com/microsoft/TypeScript/issues/33079
看起来你确实可以解决它,但在你的 package.json 中使用类似的东西:
{
...
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"typesVersions": {
"*": {
"dist/index.d.ts": [ "dist/index.d.ts" ],
"*": [ "dist/*" ]
}
},
"exports": {
".": "./dist/index.js",
"./": "./dist/"
},
...
}