Использование babel-plugin-transform-flow-comments не удается в папке * node_modules *? - PullRequest
0 голосов
/ 09 июля 2019

Пытаясь собрать 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?

...