Javascript 将Typescript 2.3模块发布到NPM以供角度4使用
中有相关的说明,但是它是过时的,现在有很多不同的答案,可能对你有用,也可能不有用。Jason Aden在如何发布Angular组件方面也做了一个非常好的演示,但在本例中,我只对发布普通的typescript类感兴趣。我完成了一个原型来测试这一点。我使用了来自的代码和来自的汇总建议 请注意,这里有Javascript 将Typescript 2.3模块发布到NPM以供角度4使用,javascript,node.js,angular,typescript,typescript2.2,Javascript,Node.js,Angular,Typescript,Typescript2.2,中有相关的说明,但是它是过时的,现在有很多不同的答案,可能对你有用,也可能不有用。Jason Aden在如何发布Angular组件方面也做了一个非常好的演示,但在本例中,我只对发布普通的typescript类感兴趣。我完成了一个原型来测试这一点。我使用了来自的代码和来自的汇总建议 请注意,这里有tsconfig cjs.json部分,因此除了支持webpack和Angular外,我们还支持commonjs+es5工作流 Github存储库 台阶 项目设置 初始化项目(TS模块生产者) mkdi
tsconfig cjs.json
部分,因此除了支持webpack和Angular外,我们还支持commonjs+es5工作流
Github存储库
台阶
项目设置
初始化项目(TS模块生产者)
mkdir tsmproducer
cd tsmproducer
# Initialize the project's package.json
npm init -y
替换package.json
:
下载依赖项
为es6和commonjs创建typescript编译器设置
创建类型脚本测试导出:
编撰
创建一个消费者项目
创建模块使用者
在index.ts
中,尝试以下操作:
import {printAdd, printSubtract} from 'tsmproducer';
printAdd(1, 2);
printSubtract(2, 1);
总结
- rollup生成的FESM(平面EcmaScript模块)通过
属性公开package.json的module
- Typescript声明文件被生成并放置在
目录中,并通过target/main/esm
属性公开package.json的types
- CommonJS模块支持通过
属性启用李>package.json的main
npm i
npm i -g rollup
npm i -g typescript
# Make typescript source directory
mkdir -p src/main/ts
# tsconfig-esm.json
{
"compilerOptions": {
"declaration": true,
"module": "es2015",
"target": "es5",
"rootDir": "src/main/ts",
"outDir": "target/main/esm"
},
"exclude": [
"node_modules"
]
}
# tsconfig-cjs.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"rootDir": "src/main/ts",
"outDir": "target/main/cjs"
},
"exclude": [
"node_modules"
]
}
# src/main/ts/printSubtract.ts
export function printSubtract(...numbers: number[]) {
console.log(`Subtracting the numbers: ${numbers.join(', ')}`);
}
# src/main/ts/printAdd.ts
export function printAdd(...numbers: number[]) {
console.log(`Adding the numbers: ${numbers.join(', ')}`);
}
# src/main/ts/index.ts
export * from './printAdd';
export * from './printSubtract';
npm run build-all
mkdir tsmconsumer (TS Module Consumer)
cd tsmconsumer
npm init -y
npm i ../tsmproducer
touch index.ts
import {printAdd, printSubtract} from 'tsmproducer';
printAdd(1, 2);
printSubtract(2, 1);