Я создал библиотеку Js, которую хочу использовать в некоторых проектах. Он не совсем стабилен и содержит несколько ошибок, над которыми я хочу поработать. Но как разрабатывать библиотеку, когда HMR не работает с зависимостями? Вариант использования:
- создать новый проект Vue:
vue create fooproject
, перейти в этот каталог. - добавить модуль local javascript в качестве зависимости
- вы можете скачать мою библиотеку , если хотите где-то в вашем каталоге ~ / tmp;Затем добавьте его, используя:
npm install --save ~/tmp/vue-extensions # or where your lib lives
.
- Теперь ваши node_modules должны иметь символическую ссылку на этот каталог.
- Run
npm run serve
- он компилирует проект Vue и запускаетвеб-сервер разработчиков. Оставьте этот терминал открытым. - Теперь измените некоторый код в локальной библиотеке
vue-extensions
- просто добавьте пробел в любом месте и сохраните. - Ничего не происходит - как и сама библиотекане был скомпилирован с изменением. Поиск по импорту в каталоге dist / . Это обычный AFAIK.
- Теперь перейдите к
vue-extensions
dir и запустите npm run build
- он должен собрать библиотеку и вернуть qith success. - В этот момент первый терминал долженизменение: Webpack должен обнаружить изменение кода и вызвать HMR - он ломается в первую очередь - я полагаю, потому что vue-extensionpoints.common.js был временно удален (перед повторным созданием) и webpack больше не находит его:
Module build failed (from ./node_modules/eslint-loader/index.js):
Error: ENOENT: no such file or directory, open '/home/christian/vue-extensionpoints/dist/vue-extensionpoints.common.js'
@ ./src/main.js 7:0-50 10:8-23
@ multi (webpack)-dev-server/client?http://192.168.4.3:8080/sockjs-node (webpack)/hot/dev-server.js ./src/main.js
Это не проблема, просто перезапустите сборку: npm run serve
А теперь проблема: она снова ломается, со многими ошибками:
error: Unexpected newline between function and ( of function call (no-unexpected-multiline) at ../../Projekte/vue-extensionpoints/dist/vue-extensionpoints.common.js:88:10:
86 | /******/ })
87 | /************************************************************************/
> 88 | /******/ ({
| ^
89 |
90 | /***/ "06cf":
91 | /***/ (function(module, exports, __webpack_require__) {
error: 'exports' is defined but never used (no-unused-vars) at ../../Projekte/vue-extensionpoints/dist/vue-extensionpoints.common.js:135:25:
133 |
134 | /***/ "1d80":
> 135 | /***/ (function(module, exports) {
| ^
136 |
137 | // `RequireObjectCoercible` abstract operation
138 | // https://tc39.github.io/ecma262/#sec-requireobjectcoercible
error: 'exports' is defined but never used (no-unused-vars) at ../../Projekte/vue-extensionpoints/dist/vue-extensionpoints.common.js:370:25:
368 |
369 | /***/ "5135":
> 370 | /***/ (function(module, exports) {
| ^
371 |
372 | var hasOwnProperty = {}.hasOwnProperty;
373 |
error: 'exports' is defined but never used (no-unused-vars) at ../../Projekte/vue-extensionpoints/dist/vue-extensionpoints.common.js:417:25:
415 |
416 | /***/ "5c6c":
> 417 | /***/ (function(module, exports) {
| ^
418 |
419 | module.exports = function (bitmap, value) {
420 | return {
error: 'exports' is defined but never used (no-unused-vars) at ../../Projekte/vue-extensionpoints/dist/vue-extensionpoints.common.js:603:25:
[...and so on...]
Просто покончите с Ctrl + C и снова запустите npm run serve
, и это работает.
A npm cache clear [--force]
не помогает.
Как, черт возьми, я долженизменить библиотеку и перезагрузить ее с помощью HMR, когда мне ВСЕГДА придется перестраивать библиотеку, а также дважды останавливать и перезагружать основной сервер? Это делает разработку невозможной, за исключением того, что у вас слишком много времени и терпения для подобных вещей.
Должен быть (очевидно) более простой способ выполнения разработки библиотеки, верно?
Заранее спасибо.