内容简介:上节:手动配置vue-cli下上节目录:
上节:手动配置vue-cli下
上节目录:
本节给之前配的vue-cli集成ts,让它支持ts + vue的开发。
首先修改build/webpack.base.js:
const HTMLPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const {resolve} = require('path');
module.exports = {
entry: resolve(__dirname, '../src/main.ts'),
resolve: {
// 这里可以配置些文件后缀,用于写路径时可省略后缀(会影响打包速度,不建议配太多)
extensions: [ '.tsx', '.ts', '.js', 'vue', 'less' ]
},
module: {
rules: [{
// 识别.vue文件
test: /\.vue$/,
loader: 'vue-loader'
}, {
// 识别.ts或.tsx文件
test: /\.tsx?$/,
use: 'ts-loader'
}, {
// 用于识别vue文件中的script块
test: /\.js$/,
loader: 'babel-loader',
}, {
test: /\.(gif|jpg|jpeg|png|svg|ttf|woff)$/,
loader: 'url-loader'
}]
},
plugins: [
new HTMLPlugin({
template: resolve(__dirname, '../index.html')
}),
// 将定义过的其它规则复制并应用到 .vue 文件里相应语言的块
new VueLoaderPlugin()
]
};
在rule里加了ts规则后,通过VueLoaderPlugin也能将其用于.vue文件
然后根目录下新建tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "esNext",
// "strict": true,
"strictPropertyInitialization": false,
"strictNullChecks": false,
"noImplicitAny": false,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
/*"types": [
"webpack-env"
],*/
"paths": {
"@/*": [
"src/*"
],
"*": [
"src/*"
]
},
"lib": [
"esNext",
"dom",
"dom.iterable",
"scripthost",
"es2015.promise"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
]
}
这是ts的配置文件,不熟的话可以复制上面的,具体选项参考 官网
然后要给vue写一下类型声明,src下新建shims-vue.d.ts
src/shims-vue.d.ts:
declare module '*.vue' {
import Vue from 'vue'
export default Vue
}
如果你要写tsx语法的话再新建shims-tsx.d.ts
src/shims-tsx.d.ts:
import Vue, { VNode } from 'vue'
declare global {
namespace JSX {
// tslint:disable no-empty-interface
interface Element extends VNode {}
// tslint:disable no-empty-interface
interface ElementClass extends Vue {}
interface IntrinsicElements {
[elem: string]: any
}
}
}
然后改一下App.vue,把ts部分改成外部引入的:
src/App.vue:
<template>
<div class="app">
<h1>hello {{msg}}</h1>
</div>
</template>
<script lang="ts" src="./App.ts"></script>
<style scoped lang="less">
.app{
h1{
color: #f60;
}
}
</style>
src下新建App.ts:
import { Component, Vue } from "vue-property-decorator";
@Component({
name: "App"
})
export default class App extends Vue {
msg = 'webpack4'
}
将src/main.js改成main.ts, 现在目录大致如下:
然后安装依赖:
npm i typescript ts-loader vue-class-component vue-property-decorator -D
然后npm run dev,打开浏览器:
试下npm run build应该也能成功打包:
下节:vue-cli与vue-loader介绍(待更新)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 苹果:今年晚些时候将推全新手动安装iOS 12配置描述文件流程
- webpack4.29.x成神之路(二十三) 手动配置vue-cli下
- webpack4.29.x成神之路(二十二) 手动配置vue-cli上
- 手动升级Coreos版本
- mongodb操作的模块手动封装
- 越狱手记:手动编译安装 Electra
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
跟我学Java Web
2010-9 / 58.00元
Java Web开发是目前最流行、使用最广泛的网站开发技术。《跟我学Java Web》通过对Java Web开发中所运用到的各种技术循序渐进地进行讲解,使读者能尽快掌握开发Web应用程序的方法。《跟我学Java Web》内容包括搭建Web开发环境、HTML相关技术基础知识、JavaScript相关技术基础知识、JSP技术基础知识、Servlet技术基础知识、搭建MySQL数据库开发环境、JDBC技......一起来看看 《跟我学Java Web》 这本书的介绍吧!