Я пытаюсь составить пакет webpack из существующих файлов js и использовать экспорт из него как в других файлах JS, так и иногда в теге сценария html. Позже добавьте babel, чтобы перенести все это в es5, поэтому закомментировал раздел с помощью babel и ts, что, кстати, отлично работает. На данный момент у меня возникла проблема с экспортом с использованием прямого веб-пакета.
Конфигурация веб-пакета выглядит следующим образом:
var path = require('path');
const { updateCommaList } = require('typescript');
module.exports = {
entry: {
'core' : [
'./src/utils.js',
'./src/zdlg.js'
]
},
devtool: 'source-map',
stats: 'verbose',
resolve: {
modules: ['node_modules']
},
resolveLoader: {
extensions: ['.ts', '.tsx'],
mainFields: ['loader', 'main']
},
output: {
filename: '[name].js',
library: "LIB",
libraryTarget: 'var',
path: path.resolve(__dirname, "dist")
},
module: {
}
};
Я могу объединять файлы, ошибок нет. Я экспортирую функции, используя оператор экспорта, например:
export function v ...
И в файле html у меня есть
<script src="./core.js"></script>
<script type="module" src="./io.js"></script>
После того, как я возился в течение последних нескольких дней, я понял пару вещи.
- Если у меня есть единственный файл в разделе ввода для основного объекта, экспорт работает, поскольку переменная LIB имеет свойство для каждой экспортируемой функции, и я могу вызвать LIB.v () нормально.
- импорт все равно не работает, то есть io. js import:
import {v} from './core.js';
Выдает ошибку при загрузке страницы: Uncaught SyntaxError: import not found: v для строки выше.
Добавление второго файла к записи заставляет webpack переопределять экспорт из 1-го файла. Причина, по которой я изначально не видел экспорта, заключалась в том, что zdlg. js ничего не экспортировал, а LIB не имел экспорта. Если zdlg. js экспортирует какие-либо функции, они единственные, что отображаются в LIB.
Итак, в конце концов, я могу экспортировать функции из одного файла, но я думал, что все цель веб-пакета состояла в том, чтобы позволить составлять модули из нескольких файлов.
Я не уверен, что мне не хватает или где я ошибаюсь, должно быть очень c материал ...
Если это важно, вот список разработчиков:
"devDependencies": {
"@babel/core": "^7.8.7",
"@babel/preset-env": "^7.8.7",
"babel-loader": "^8.0.6",
"install": "^0.13.0",
"npm": "^6.14.7",
"ts-loader": "^6.2.1",
"typescript": "^3.8.3",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.12",
"webpack-dev-middleware": "^3.7.2",
"webpack-dev-server": "^3.11.0",
"webpack-merge": "^5.0.9"
}