国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自己構(gòu)建webpack+vue3+ts

這篇具有很好參考價值的文章主要介紹了自己構(gòu)建webpack+vue3+ts。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

先看看我的目錄結(jié)構(gòu)(我全局使用TS):
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js

一、安裝配置webpack打包

安裝esno

npm install esno

esno 是基于 esbuild 的 TS/ESNext node 運行時,有了它,就可以直接通過esno *.ts的方式啟動腳本,package.json中添加 type:“module”,使用esm的模塊管理方式。

{
  "name": "create-my-vue-test",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "esno ./config/build.ts"
  },
  "type": "module",
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "esno": "^4.0.0"
  }
}

創(chuàng)建build.ts,執(zhí)行npm run build
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js

安裝webpack、webpack-cli

npm install webpack
npm install webpack-cli

webpack必須安裝webpackcli
build.ts中編寫打包代碼

import webpack, { Stats } from "webpack";
import config from "./webpack.config"

//我直接使用webpack,不使用webpck-cli,vue的腳手架
const compiler = webpack(config, (err, stats) => {
    if (err) {
        console.error(err.stack || err)
    } else if ((stats as Stats).hasErrors()) {
        console.log(stats);
    } else {

    }
})

編寫打包配置文件webpack.config.ts

import path from "path";//nodejs里面的基本包,用來處理路徑
const parentDir = path.resolve(process.cwd());

//我們先打個基本的包
export default {
    mode: "development" as "development",
    entry: "./src/main.ts",
    output: {
        path: path.join(parentDir, 'dist'),
        filename: "bundle.js",
    },
    module: {
        // 指定要加載的規(guī)則
        rules: [],
    },
    // 模塊配置:讓webpack了解哪些方法可以被當(dāng)作模塊引入
    resolve: {
		extensions: ['.ts', '.js']
    },
    plugins: []
};

創(chuàng)建業(yè)務(wù)代碼入口文件main.ts

let test: string = '';
console.log(test);

執(zhí)行一下打包npm run build
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js
報錯了,說需要個loader來處理ts,我們安裝ts-loader,并在webpack.config.ts中添加相關(guān)配置

npm install ts-loader
import path from "path";//nodejs里面的基本包,用來處理路徑
const parentDir = path.resolve(process.cwd());

//我們先打個基本的包
export default {
    mode: "development" as "development",
    entry: "./src/main.ts",
    output: {
        path: path.join(parentDir, 'dist'),
        filename: "bundle.js",
    },
    module: {
        // 指定要加載的規(guī)則
        rules: [
            {
                test: /\.ts$/, // 解析 ts
                loader: "ts-loader"
            }
        ],
    },
    // 模塊配置:讓webpack了解哪些方法可以被當(dāng)作模塊引入
    resolve: {
		extensions: ['.ts', '.js']		
    },
    plugins: [

    ]
};

再次執(zhí)行npm run build

自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js
有報錯了,說沒有tsconfig.json文件
創(chuàng)建tsconfig.ts

{
    "compilerOptions": {
      "target": "esnext",
      "module": "esnext",
      "strict": true,
      "jsx": "preserve",
      "importHelpers": true,
      "moduleResolution": "node",
      "skipLibCheck": true,
      "esModuleInterop": true,
      "allowSyntheticDefaultImports": true,
      "sourceMap": true,
      "baseUrl": ".",
      "paths": {
        "@/*": [
          "src/*"
        ]
      },
      "lib": [
        "esnext",
        "dom",
        "dom.iterable",
        "scripthost"
      ]
    },
    "include": [
      "src/*.ts",
      "src/**/*.ts",
      "src/**/*.tsx",
      "src/**/*.vue",
      "tests/**/*.ts",
      "tests/**/*.tsx"
    ],
    "exclude": [
      "node_modules"
    ]
  }

再次打包,打包成功了
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js
手動拷貝到index.html里面試試,運行也沒有問題
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js
安裝HtmlWebpackPlugin自動拷貝打包文件到index.html中,安裝CleanWebpackPlugin,自動清除dist目錄,并更新webpack.config.ts

import path from "path";//nodejs里面的基本包,用來處理路徑
import { CleanWebpackPlugin } from "clean-webpack-plugin";
import HtmlWebpackPlugin from 'html-webpack-plugin';
const parentDir = path.resolve(process.cwd());

//我們先打個基本的包
export default {
    mode: "development" as "development",
    entry: "./src/main.ts",
    output: {
        path: path.join(parentDir, 'dist'),
        filename: "bundle.js",
    },
    module: {
        // 指定要加載的規(guī)則
        rules: [
            {
                test: /\.ts$/, // 解析 ts
                loader: "ts-loader"
            }
        ],
    },
    // 模塊配置:讓webpack了解哪些方法可以被當(dāng)作模塊引入
    resolve: {
		extensions: ['.ts', '.js']
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: '你好,世界',
            template: './public/index.html'
        }),
        new CleanWebpackPlugin()
    ]
};

現(xiàn)在就可以自動將打包js文件插入到index.html中
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js
增加開發(fā)服務(wù)并熱更新,安裝webpack-dev-server

npm install webpack-dev-server

創(chuàng)建dev.ts

import path from "path";//nodejs里面的基本包,用來處理路徑
import webpack, { Stats } from "webpack";
import WebpackDevServer from "webpack-dev-server";
import config from "./webpack.config"

const parentDir = path.resolve(process.cwd());

const compiler = webpack(config)

const server = new WebpackDevServer({
    port: 3000,
    static: {
        directory: path.join(parentDir, 'public'),
    },
}, compiler);

const runServer = async () => {
    console.log('Starting server...');
    await server.start();
};

runServer();



在package.json中增加dev的腳本

"scripts": {
    "build": "esno ./config/build.ts",
    "dev": "esno ./config/dev.ts"
  },

執(zhí)行npm run dev,就啟動起來了
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js

二、集成Vue

增加App.vue、更改main.ts、main.scss
App.vue

<template>
  <div>test</div>
</template>

<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
  name: "App",
  setup() {
    return {};
  },
});
</script>

main.ts

import { createApp } from 'vue'
import App from './components/App.vue'
import "./assets/main.scss"

// 注意:這里的 #app,需要在 public/index.html 中,寫一個 id 為 app 的 div
createApp(App).mount('#app');

main.scss

* {
  background-color: red;
}

自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js
安裝依賴

npm i --save-dev vue vue-loader url-loader style-loader css-loader node-sass sass-loader

更改webpack.config.ts

import path from "path";//nodejs里面的基本包,用來處理路徑
import { CleanWebpackPlugin } from "clean-webpack-plugin";
import HtmlWebpackPlugin from 'html-webpack-plugin';
import { VueLoaderPlugin } from "vue-loader"

const parentDir = path.resolve(process.cwd());

//我們先打個基本的包
export default {
    mode: "development" as "development",
    entry: "./src/main.ts",
    output: {
        path: path.join(parentDir, 'dist'),
        filename: "bundle.js",
    },
    module: {
        // 指定要加載的規(guī)則
        rules: [
            {
                test: /\.vue$/,
                loader: 'vue-loader',
            },
            {
                test: /\.scss$/,
                use: [
                    'style-loader',//https://github.com/vuejs/vue-style-loader/issues/42
                    'css-loader',
                    'sass-loader'
                ]
            },
            {
                test: /\.css$/i,
                use: ["style-loader", "css-loader"],
            },
            {
                test: /\.(woff|woff2|eot|ttf|svg)$/,
                use: [
                    {
                        loader: 'url-loader',
                        options: {
                            limit: 10000,
                            name: './font/[hash].[ext]',
                            publicPath: 'dist'
                        }
                    }
                ]
            },
            {
                test: /\.(png|jpg|gif)$/i,
                use: [
                    {
                        loader: 'url-loader',
                        options: {
                            limit: 8192,
                        },
                    },
                ],
            },
            {
                test: /\.ts$/, // 解析 ts
                loader: "ts-loader",
                options: {
                    // 上面一行不太重要,應(yīng)該會按照默認(rèn)路徑尋找,下面一行必須要

                    // appendTsSuffixTo/appendTsxSuffixTo配置項的意思是說,從vue文件里面分離的script的ts,tsx(取決于<script lang="xxx"></script>)內(nèi)容將會被加上ts或者tsx的后綴,然后交由ts-loader解析。
                    // 我在翻看了ts-loader上關(guān)于appendTsxSuffixTo的討論發(fā)現(xiàn),ts-loader貌似對文件后綴名稱有很嚴(yán)格的限定,必須得是ts/tsx后綴,所以得在vue-loader extract <script>中內(nèi)容后,給其加上ts/tsx的后綴名,這樣ts-loader才會去處理這部分的內(nèi)容。
                    // 在Vue項目中使用Typescript

                    configFile: path.resolve(process.cwd(), 'tsconfig.json'),
                    appendTsSuffixTo: [/\.vue$/]
                },
            }
        ],
    },
    // 模塊配置:讓webpack了解哪些方法可以被當(dāng)作模塊引入
    resolve: {
        extensions: [
            '.tsx',
            '.ts',
            '.mjs',
            '.js',
            '.jsx',
            '.vue',
            '.json']
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: '你好,世界',
            template: './public/index.html'
        }),
        new CleanWebpackPlugin(),
        // make sure to include the plugin for the magic
        new VueLoaderPlugin()
    ]
};

創(chuàng)建shims-vue.d.ts

/* eslint-disable */
declare module '*.vue' {
    import type { DefineComponent } from 'vue'
    const component: DefineComponent<{}, {}, any>
    export default component
}

最終的package.json

{
  "name": "create-my-vue-test",
  "version": "1.0.0",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "esno ./config/dev.ts",
    "build": "esno ./config/build.ts"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "clean-webpack-plugin": "^4.0.0",
    "css-loader": "^6.9.1",
    "esno": "^4.0.0",
    "html-webpack-plugin": "^5.6.0",
    "node-sass": "^9.0.0",
    "sass-loader": "^14.0.0",
    "style-loader": "^3.3.4",
    "ts-loader": "^9.5.1",
    "url-loader": "^4.1.1",
    "vue": "^3.4.15",
    "vue-loader": "^17.4.2",
    "webpack": "^5.89.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^4.15.1"
  }
}

再次運行,基礎(chǔ)搭建好了
自己構(gòu)建webpack+vue3+ts,webpack,前端,node.js文章來源地址http://www.zghlxwxcb.cn/news/detail-817524.html

到了這里,關(guān)于自己構(gòu)建webpack+vue3+ts的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Vue H5項目實戰(zhàn)】從0到1的自助點餐系統(tǒng)—— 搭建腳手架(Vue3.2 + Vite + TS + Vant + Pinia + Node.js)

    【Vue H5項目實戰(zhàn)】從0到1的自助點餐系統(tǒng)—— 搭建腳手架(Vue3.2 + Vite + TS + Vant + Pinia + Node.js)

    H5 項目基于 Web 技術(shù),可以在智能手機(jī)、平板電腦等移動設(shè)備上的瀏覽器中運行,無需下載和安裝任何應(yīng)用程序,且H5 項目的代碼和資源可以集中在服務(wù)器端進(jìn)行管理,只需更新服務(wù)器上的代碼,即可讓所有顧客訪問到最新的系統(tǒng)版本。 本系列將以肯德基自助點餐頁面為模板

    2024年02月13日
    瀏覽(133)
  • 前端Vue Node.js + Express + MongoDB 構(gòu)建的后端服務(wù)API接口

    構(gòu)建一個使用 Vue.js 作為前端, Node.js + Express + MongoDB 作為后端服務(wù)的全棧應(yīng)用涉及到多個步驟。這里簡要概述整個過程,并提供一些基本的代碼示例來幫助你開始。 安裝 MongoDB: 根據(jù)你的操作系統(tǒng)從 MongoDB 官網(wǎng) 下載并安裝 MongoDB。 啟動 MongoDB 服務(wù): 安裝完成后,根據(jù) MongoDB 的

    2024年04月14日
    瀏覽(42)
  • node.js+NPM包管理器+Webpack打包工具+前端項目搭建

    node.js+NPM包管理器+Webpack打包工具+前端項目搭建

    javascript運行環(huán)境(無需依賴html文件) BFF,服務(wù)于前端的后端 官網(wǎng)下載安裝,node -v查看是否安裝成功 ①、創(chuàng)建一個01.js文件 ②、通過CMD命令執(zhí)行(或者通過工具的集成終端) node 01.js 如果出現(xiàn)權(quán)限原因,可以通過管理員方式打開工具 ③、通過瀏覽器訪問http://127.0.0.1:8888 如

    2024年02月07日
    瀏覽(44)
  • Electron + Vue3 + Vite + TS 構(gòu)建桌面應(yīng)用

    Electron + Vue3 + Vite + TS 構(gòu)建桌面應(yīng)用

    之前是使用React、Electron、TS和webpack來構(gòu)建桌面應(yīng)用的。雖然功能齊全,但是打包等等開發(fā)的體驗不太理想,總感覺太慢了。作為一個開發(fā)者,我們總是希望,執(zhí)行構(gòu)建命令后,可以快速打包或者啟動本地應(yīng)用,且通過更少的配置,來完成開發(fā)體驗。 現(xiàn)在的vite已經(jīng)得到廣泛的

    2024年02月14日
    瀏覽(34)
  • Vue3通透教程【十七】Vite構(gòu)建TS版本Vue項目

    專欄介紹: 涼哥作為 Vue 的忠實 粉絲輸出過大量的 Vue 文章,應(yīng)粉絲要求開始更新 Vue3 的相關(guān)技術(shù)文章,Vue 框架目前的地位大家應(yīng)該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2024年02月13日
    瀏覽(88)
  • vite+vue3+ts項目構(gòu)建詳細(xì)步驟(配置多語言版本)

    vite+vue3+ts項目構(gòu)建詳細(xì)步驟(配置多語言版本)

    時過境遷,我們見證了諸如 webpack、Rollup 和 Parcel 等工具的變遷,它們極大地改善了前端開發(fā)者的開發(fā)體驗。 然而,當(dāng)我們開始構(gòu)建越來越大型的應(yīng)用時,需要處理的 JavaScript 代碼量也呈指數(shù)級增長。包含數(shù)千個模塊的大型項目相當(dāng)普遍?;?JavaScript 開發(fā)的工具就會開始遇

    2024年02月05日
    瀏覽(24)
  • csdn新星計劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板

    csdn新星計劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板

    大家好,我是yma16,本文分享利用inscode搭建vue3(ts)+antd前端模板。 2023 新星計劃 vue(ts)+antd賽道報名入口:https://bbs.csdn.net/topics/616574177 搭建vue3+ts+antd的指引:認(rèn)識vite_vue3 初始化項目到打包 InsCode 是一個一站式的軟件開發(fā)服務(wù)平臺,從開發(fā)-部署-運維-運營,都可以在 InsCode 輕松

    2024年02月16日
    瀏覽(22)
  • AJAX入門到實戰(zhàn),學(xué)習(xí)前端框架前必會的(ajax+node.js+webpack+git)(七)

    AJAX入門到實戰(zhàn),學(xué)習(xí)前端框架前必會的(ajax+node.js+webpack+git)(七)

    實操: server.js utils/lib/index.js utils/package.json 從別處(網(wǎng)上、其他人手中)拿到寫好的項目,一般不攜帶node_modules文件夾(所占存儲空間大) 但有package.json文件,里面記載了當(dāng)前項目下載過的包 還有package-lock.json文件,固定軟件包的版本 導(dǎo)入模塊/包,除了自己創(chuàng)建的模塊、包

    2024年01月22日
    瀏覽(67)
  • Vue3 - 解決 build / dev 打包運行時突然出現(xiàn)一堆 ts 相關(guān)的報錯,強(qiáng)制關(guān)閉整個項目的 ts 代碼語法校驗和驗證(webpack / vite 均可)

    無論您是 vite 還是 webpack,都可以 100% 去掉運行或打包時的 ts 語法驗證。 本文 實現(xiàn)了在 vue3 + ts 開發(fā)中,關(guān)閉運行、打包部署命令時出現(xiàn)的各種 ts 校驗報錯,去掉對 ts 的驗證, 有些朋友對 ts 不是很了解(所以在寫代碼時沒注意一些語法),導(dǎo)致最終 build 打包時出現(xiàn)了很多

    2024年02月11日
    瀏覽(140)
  • Vue3學(xué)習(xí)-01_前端工程化與webpack

    最近在學(xué)習(xí)Vue知識,參照的教程是黑馬程序員官網(wǎng)提供的免費前端教程,這里記錄一下自己的學(xué)習(xí)筆記以及遇到的相關(guān)問題。 前端工程化指的是:在企業(yè)級的前端項目開發(fā)中,把前端開發(fā)所需的工具、技術(shù)、流程、經(jīng)驗等進(jìn)行規(guī)范化、標(biāo)準(zhǔn)化。最終落實到細(xì)節(jié)上,就是實現(xiàn)前

    2024年02月13日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包