在* node_modules *文件夹中使用babel-plugin-transform-flow-comments失败吗?

时间:2019-07-08 23:59:14

标签: npm babel vue-cli-3

在尝试构建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原样构建hello项目,那么它可以正常工作(除了与未使用foo相关的2条警告之外)。

但是如果我将其放在名称为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上运行时失败?

0 个答案:

没有答案