У меня есть библиотека, которую я разрабатываю в машинописи. У меня есть решение собрать его через tsc, чтобы использовать его как пакет npm, но tsc транслирует каждый файл отдельно. Я хотел бы использовать веб-пакет для создания пакета всего в одном минимизированном файле, но он не работает. Я провел несколько тестов (создал простой пакет в JS, используя module.exports / require, и он работал, пакет JS, который не смог использовать экспорт / импорт синтаксиса es6), так что я думаю, что я исхож из синтаксиса импорта / экспорта машинописного текста .. Но я ожидал, что загрузчик (я пытался ts-loader et awesome-ts-loader) перевести его, но в каждом случае, когда я пытаюсь импортировать пакет, он всегда возвращает «undefined».
это мой файл tsconfig.json:
{
"compilerOptions": {
"declaration": true,
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "es6",
"target": "es6",
"resolveJsonModule": true,
"moduleResolution": "node"
},
"exclude": [
"node_modules"
]
}
(для модуля и цели я пытался перейти на commonjs для модуля и старых тегов, но это ничего не меняет ....)
Вот файл конфигурации веб-пакета:
const path = require('path');
module.exports = {
entry: './src/index.ts',
mode: 'production',
module: {
rules: [
{
test: /\.ts$/,
use: 'ts-loader',
exclude: '/node_modules/'
}
]
},
resolve: {
extensions: ['.ts']
},
output: {
filename: 'index.js',
path: path.resolve(__dirname, 'dist'),
library: '',
libraryTarget: 'commonjs2',
libraryExport: 'default'
}
};
и очень простой src / index.ts
export function foo() {
console.log('this is foo');
}
но невозможно импортировать функцию foo ...
Я сделал тестовый файл, в другом проекте.
Я использовал «npm link» в проекте библиотеки, чтобы зарегистрировать пакет в глобальных модулях, и «npm link @ kalika-library / mixins» в тестовом проекте, чтобы добавить его в node_modules.
Вот простой тест, который я сделал:
import * as foo from '@kalika-libraries/mixins';
console.log('foo', foo);
Но он всегда записывает "undefined" ...
Я искал несколько часов, пробуя разные конфигурации tsconfigs или webpack, но это всегда одно и то же ... Единственный случай, когда импорт работал, был при использовании tsc ... Но, глядя на некоторые библиотеки (например, angular), я знаю, что связанные библиотеки возможный ! Я просто не знаю, как это сделать (возможно, я не использую нужные инструменты ...).
Да, и вот package.json библиотеки, на всякий случай:
{
"name": "@kalika-libraries/mixins",
"version": "1.0.0",
"description": "Libraries to apply mixins on classes",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "npx webpack"
},
"author": "Kalika",
"license": "MIT",
"devDependencies": {
"@types/yeoman-generator": "^3.0.1",
"codelyzer": "^5.0.0",
"rxjs-tslint-rules": "^4.21.0",
"ts-loader": "^5.3.3",
"tslint-consistent-codestyle": "^1.15.1",
"tslint-eslint-rules": "^5.4.0",
"tslint-sonarts": "^1.9.0",
"typescript": "^3.3.3",
"vrsource-tslint-rules": "^6.0.0",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0"
}
}
И я использовал команду «npx webpack» в папке библиотеки, чтобы собрать ее.
Так что, если у вас есть идея (надеюсь, вы не предложите решения, которые я уже пробовал), я был бы рад проверить!
спасибо.