Я пишу библиотеку Typescript со следующей структурой:
и содержимым файла:
restApi.class.ts
import { restApiOptions } from '../models/rest.options.model';
import { StoreMethods } from '../routes/store.methods.class';
import { UserMethods } from '../routes/user.methods.class';
export class RestApi {
public storeRest: StoreMethods;
public userRest: UserMethods;
constructor(private restApiOptions: restApiOptions) {
.....
}
setLanguage(langId: number){
.....
}
}
store.methodds.class.ts
import { Observable } from 'rxjs';
import { restApiOptions } from '../models/rest.options.model';
import { routeMethods } from '../core/routeMethods.interface';
export class StoreMethods implements routeMethods {
constructor(private restApiOptions: restApiOptions) {
.....
}
setLanguage(languageId: number){
......
}
getStore(storeId: number): Observable<any> {
.....
}
}
и public_api.ts
export { RestApi } from './lib/core/restApi.class'
библиотека предназначена для использования в качестве зависимости в проекте Angular2 +, поэтому у меня есть файл tsconfig со следующей конфигурацией для его переноса и создания файлов определений
{
"compilerOptions": {
"outDir": "./dist/",
"declaration": true,
"module": "commonjs",
"target": "es5",
"lib": [
"es2017",
"dom",
"es2015",
"es5",
"es6"
]
},
"exclude": [
"node_modules",
]
}
Проблема, с которой я столкнулся, заключается в том, что эту библиотеку также необходимо использовать в простом проекте javascript es5 «по старинке», то есть, включая файл библиотеки javascript в тег сценария и используя его таким образом, какthis:
var myRestApi = new RestApi(options)
Я использую webpack для объединения всех файлов в один файл bundle.js, но после генерации этого файла и включения его в проект у меня нет доступа к классу RespApi.
это мой webpack.config.js
const path = require('path');
module.exports = [{
entry: './src/public_api.ts',
module: {
rules: [{
test: /\.tsx?$/,
use: [{
loader : 'ts-loader',
options:{
configFile : 'tsconfig.json'
}
}],
exclude: /node_modules/
}]
},
resolve: {
extensions: ['.ts', '.js', '.tsx']
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dev')
}
}];
есть ли способ перенести липерейти в один файл JavaScript и получить доступ к классу RestApi из глобального ??