next.jsで、 NUXT - インストール
$ vue init nuxt-community/starter-template <project-name>
$ cd <project-name>
$ npm install
$ npm run dev
こちらの手順通りにプロジェクトを作成して開発していったのはのはいいのだけど、 途中からtypescriptで書きたくなったので、導入したときのメモです。
正規の手順の場合?
nuxt.js + typescriptでプロジェクトを作成する場合、すでにテンプレートが用意されております。
$ vue init nuxt-community/typescript-template my-project
このようにコマンドを打つことで、すでにtypescriptが導入されているプロジェクトが作成できますので、 まだプロジェクト作成していないのなら、こっちの方が良いです。
本記事は、これのtypescriptに関する部分を抜き出して 既存のプロジェクトにtypescriptを導入する手順になります。
では早速手順を書いていきます。
既存のnuxt.jsプロジェクトでtsを扱えるようにする手順
package.json
dependencies, devDependenciesそれぞれに以下のように記載する。
"dependencies": {
"nuxt": "^1.4.1",
"nuxt-property-decorator": "^1.2.0"
},
"devDependencies": {
"ts-loader": "^3.5.0",
"typescript": "^2.7.2"
}
バージョンが違うとエラーが起きるかもしれないので注意して下さい。
next.config.js
こんな感じで "~/modules/typescript.js”を追加
modules: [
'@nuxtjs/pwa', '@nuxtjs/dotenv', "~/modules/typescript.js"
],
~/modules/typescript.js
これは、とりあえずtypescript-tempateのものをそのまま持ってきました。 各項目の意味はあまり深く考えてないです。
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "es2015"],
"module": "es2015",
"moduleResolution": "node",
"experimentalDecorators": true,
"noImplicitAny": false,
"noImplicitThis": false,
"strictNullChecks": true,
"removeComments": true,
"suppressImplicitAnyIndexErrors": true,
"allowSyntheticDefaultImports": true,
"allowJs": true,
"baseUrl": ".",
"paths": {
"~/*": ["./*"]
}
}
}
sample.vue
あとは、vueファイルのscriptのlangをtsにして、文法に合わせて書いていく。 下記はnuxt.jsのvalidateの部分を書いているところ。
<script lang="ts">
import {
Vue
} from "nuxt-property-decorator"
export default class extends Vue {
validate ({ params }) {
// 数値でなければならない
return /^\d+$/.test(params.id)
}
}
</script>
実行
$ npm install
$ npm run dev
コンパイルでエラーが起きなければ成功です。 tsで書いて、動かすことができました!
ts-lintは今回やってないです。
typescriptの書き方
typescriptは私もそんな詳しいわけじゃありませんが、ここら辺あたりが参考になりそうです。
- github - Microsoft/TypeScript-Vue-Starter
- TypeScriptではじめるVueコンポーネント(vue-class-component)
- TypeScript超入門(2):構文を理解する
- github - kaorun343/vue-property-decorator