vue.js - Vue-CLI v3 自以为是的项目结构
问题描述
我正在尝试将现有项目移动到 Vue,我使用了 Vue-CLI 3 并将其安装在本地,然后我通过以下命令生成了项目,./node_modules/.bin/vue create dashboard
并使用了以下选项:
检查项目所需的功能:Babel、TS、PWA、Router、Vuex、CSS Pre-processors、Linter、Unit、E2E
使用类风格的组件语法?是的
使用 Babel 和 TypeScript 来自动检测 polyfill?是的
选择一个 CSS 预处理器(默认支持 PostCSS、Autoprefixer 和 CSS 模块):SCSS/SASS
选择一个 linter/formatter 配置:TSLint
选择其他 lint 功能:保存时使用 Lint
选择一个单元测试解决方案:Mocha
选择 E2E 测试解决方案:Cypress
你更喜欢在哪里放置 Babel、PostCSS、ESLint 等的配置?在专用配置文件中
将此保存为未来项目的预设?不
这将生成以下项目结构:
..\Web\.experiment
├── dashboard
| ├── babel.config.js
| ├── cypress.json
| ├── node_modules
| ├── package-lock.json
| ├── package.json
| ├── public
| | ├── favicon.ico
| | ├── img
| | ├── index.html
| | └── manifest.json
| ├── src
| | ├── App.vue
| | ├── assets
| | ├── components
| | ├── main.ts
| | ├── registerServiceWorker.ts
| | ├── router.ts
| | ├── shims-tsx.d.ts
| | ├── shims-vue.d.ts
| | ├── store.ts
| | └── views
| ├── tests
| | ├── e2e
| | └── unit
| ├── tsconfig.json
| └── tslint.json
├── node_modules
├── package-lock.json
└── package.json
现在,我遇到以下问题:
在我的公司,我们倾向于将与项目相关的所有工具作为项目的一部分安装,而不是全局安装,在这种情况下,我找不到告诉 Vue-CLI3 直接在
.experiment
目录中生成文件的方法,所以现在我们有两个node_modules
目录,而不是您在上面的结构中看到的一个目录。我们当前的项目结构如下:
..\Web\<domain>\Src\Dashboard\ ├── app ├── node_modules ├── package-lock.json ├── package.json ├── tests ├── tsconfig.json └── tslint.json
这对我们来说非常重要,因为我们有依赖于这个结构的东西,所以我所做的就是开始将生成的目录中的东西复制/粘贴到项目中以匹配我们的结构。
在我复制/粘贴所有内容并运行后
npm run serve
,它开始抱怨并引发以下错误:ERROR Failed to compile with 1 errors 17:00:23 This relative module was not found: * ./src/main.ts in multi (webpack)-dev-server/client?/sockjs-node (webpack)/hot/dev-server.js ./src/main.ts
所以我去了
node_modules
目录并搜索了./src/main.ts
我已经找到它..\Web\<domain>\Src\Dashboard\node_modules\@vue\cli-plugin-typescript\index.js
并且我不知道如何配置它所以我所做的就是将模块的默认路径更改为./app/main.ts
然后我收到以下错误:ERROR Failed to compile with 1 errors 17:07:52 This dependency was not found: * @/components/HelloWorld.vue in ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-2!./node_modules/vue-loader/lib??vue-loader-options!./app/views/Home.vue?vue&type=script&lang=ts
所以我改为
@
因为/app
在评论中它说以下“// @是/src的别名”但它并没有真正起作用,因为那时我得到了类似的错误:ERROR Failed to compile with 1 errors 17:37:33 This dependency was not found: * /app/components/HelloWorld.vue in ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-2!./node_modules/vue-loader/lib??vue-loader-options!./app/views/Home.vue?vue&type=script&lang=ts
我有以下问题:
如何
node_modules
使用 Vue-CLI v3 在可能存在目录的现有目录中生成模板?如何在不弄乱模块本身的情况下配置 Vue 的入口点?例如,我想更改
./src/main.ts
为./app/main.ts
.如何更改
@
指向的位置?
我阅读并发现vue.config.js
存在类似的东西,但我并不真正了解如何配置它以满足我的需求。
解决方案
我已经通过vue.config.js
在项目的根目录创建一个文件解决了我遇到的所有问题,然后使用了以下配置:
"use strict"
const path = require("path")
module.exports = {
chainWebpack: config => {
const app = config.entry("app");
app.clear();
app.add("./app/main.ts");
},
configureWebpack: {
resolve: {
alias: {
"@": path.resolve("app"),
}
}
}
}
推荐阅读
- wordpress - 谁能帮我解决这个问题?
- docker - 无法在 grafana 仪表板中添加 sysdig 插件
- heroku - 如何更新 Heroku?
- r - 从 n 个列表中找到 x 的列表
- node.js - 将用户电话号码属性更新为 AWS cognito 并使用 node.js 通过 sms mfa 验证电话号码
- java - MVVM 移动种子
- python - 将 S3 存储桶中的 XML 文件转换为 JSON 并放在同一个存储桶中
- python - 布尔索引与 np.where
- c# - 如何在 Salesforce 中使用 OAuth 访问令牌验证我的 SOAP 请求?
- java - Java中PERT图表的算法