Моя команда недавно начала переносить наши сайты на vue.js.В целом все прошло очень хорошо, но у нас есть проблемы с совместным использованием общих файлов javascript и компонентов vue между различными веб-сайтами.Я опубликовал вопрос об этом некоторое время назад, и мы решили сохранить все общие файлы в отдельном репо и использовать подмодуль git для вставки файлов в проекты.По ряду причин мы хотим отойти от этого, и мой менеджер проекта попросил меня рассмотреть альтернативы, но я действительно изо всех сил.
Мы хотим, чтобы все файлы были включены вместе спроекты и импортировать их в случае необходимости.Таким образом, макет файла будет просто
Project
├── ourSharedStuff
│ ├── usefulFunctions.js
│ └── coolwidget.vue
├── website1
│ └── package.json
└── website2
└── package.json
Тогда мы подумали просто импортировать нужные нам файлы, вот так
import { somefunction } from '../ourSharedStuff/usefulFunctions';
import { coolWidget } from '../ourSharedStuff/coolwidget.vue';
Однако, поскольку импорт идет из-за пределов проекта, кажется,путать веб-пакет, когда он пытается разрешить зависимости для всего, что происходит из общего проекта (например, если coolwidget.vue
нужны моменты).Именно эта проблема привела к тому, что мы в первую очередь использовали субмодули.
Поскольку это, казалось, вызывало проблему, я подумал: «А, может быть, если он пытается разрешить зависимости от общего проекта оттуда, он должен иметь своисобственные зависимости, объявленные в package.json ".Поэтому я попытался добавить package.json в общий проект и использовать npm install ../ourSharedStuff/
для включения его в проект.Но это тоже не сработало, и у меня все еще были подобные проблемы, потому что когда вы используете npm для установки такого расположения файла, он просто создает символическую ссылку, и веб-пакет, похоже, все еще запутывается.
Посленекоторые прогуглили, оказалось, что если вы используете npm для установки архива, он работает правильно и создает фактические файлы в node_modules
.Это прекрасно работало, за исключением одной проблемы ... файлы в общем проекте записаны в es6 и должны быть перенесены.Потому что, как и почти все, мы исключаем node_modules
из запуска через babel:
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['@babel/preset-env'],
plugins: [
'@babel/transform-runtime',
]
}
Итак, я подумал: «Ну, это исключение - это просто регулярное выражение, я просто изменю его, чтобы исключить все папки».кроме наших ".Поэтому я изменил его на: /node_modules\/(?!ourSharedStuff)/
И веб-пакет начал давать эзотерические сообщения, когда я пытаюсь собрать
ПРЕДУПРЕЖДЕНИЕ в ./node_modules/core-js/modules/_is-object.js 4: 9-16 «экспорт по умолчанию» (импортированный как «_typeof») не найден в «@ babel / runtime / helpers / typeof»
Я в полной растерянностикак добиться чего-то, что должно быть довольно легко. Итак, в конце концов, мой вопрос: каков наилучший способ иметь общие файлы .js и .vue, которые написаны в es6 и могут иметь свои собственные внешние зависимости, совместно используемые несколькимипроекты, в которых необходимые преобразования применяются при создании этих проектов?