在尝试构建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
上运行时失败?