Пытаясь собрать vue-grid-layout
, я обнаружил, что, по-видимому, не могу собрать его, если vue-grid-layout
находится внутри папки, совпадающей с *node_modules*
, но он прекрасно работает в другом месте.С тех пор я воспроизвел его с очень простым hello
проектом, который также использует babel-plugin-transform-flow-comments
, как и vue-grid-layout
(см. Ниже).
Я столкнулся с ним, потому что пытался создать vue-grid-layout
, которыйзависимость для моего проекта и, следовательно, он был найден в каталоге node_modules/vue-grid-layout
.Мне пришлось скопировать зависимость из node_modules
, скомпилировать ее и скопировать dist/*
обратно в node_modules/vue-grid-layout/dist
каждый раз, когда я хотел изменить код vue-grid-layout
, и я не понимаю, почему.
Возможно, это потому, что я не понимаю, как заново построить зависимость после того, как я изменил какой-то файл src/*
в зависимости, и я делаю это неправильно.
Что я делаю, чтобы воспроизвести это просто:
npx vue create hello
cd hello
yarn add babel-plugin-transform-flow-comments
Тогда я на самом деле использую babel-plugin-transform-flow-comments
следующим образом:
diff --git a/babel.config.js b/babel.config.js
index ba17966..7b54aef 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,5 +1,8 @@
module.exports = {
presets: [
'@vue/app'
- ]
+ ],
+ "plugins": [
+ "transform-flow-comments"
+ ],
}
diff --git a/src/main.js b/src/main.js
index 63eb05f..ff5bf95 100644
--- a/src/main.js
+++ b/src/main.js
@@ -3,6 +3,8 @@ import App from './App.vue'
Vue.config.productionTip = false
+function foo(x: number): string {}
+
new Vue({
render: h => h(App),
}).$mount('#app')
Теперь, если я создаю свой привет проект как есть с npx vue-cli-service build
, он работает нормально (кроме 2предупреждения о том, что foo
не используется).
Но если я помещу его в каталог с node_modules
в названии, оно не будет работать:
cd ..
mkdir some-node_modules-dir
cp -a hello some-node_modules-dir
cd some-node_modules-dir/hello
npx vue-cli-service build
В результате:
ERROR Failed to compile with 1 errors 1:47:00 AM
error in ./src/main.js
Module parse failed: Unexpected token (6:14)
You may need an appropriate loader to handle this file type.
| Vue.config.productionTip = false
|
> function foo(x: number): string {}
|
| new Vue({
@ multi ./src/main.js
ERROR Build failed with errors.
Что дает: почему происходит сбой при попытке запустить npx vue-cli-service build
из папки с именем some-node_modules-dir/hello
, но отлично работает с some-other-dir/hello
?