webpack打包工具之ts版开发框架搭建

本文用两个框架,一个是threejs,一个是phaser3,其实流程都是一样。

nodejs、npm是基础,不再多说!

首先新建一个文件夹命名three-study,然后npm init -y

用webpack工具,第一步要安装webpack主功能包:

npm i webpack --save-dev

npm i webpack-cli --save-dev

这两个包是webpack最基础的包,如果仅仅只是用于打包,这两个足够了(--save-dev的意思是仅仅用于开发环境)。

接下来第二步为里调试方便,需要安装webpack-dev-server

npm i webpack-dev-server --save-dev

这个包是一个用来快速搭建本地运行环境的工具,通常情况下package.json里的dev或start调试模式都是用它,常用方式:

webpack-dev-server --config webpack.conf.js

其相关配置可自行百度,一般会配置到webpack.conf.js里。

第三步:安装html-webpack-plugin

npm i html-webpack-plugin --save-dev

这个包就是将打包后的js自动添加到目标index.html模板文件里,省去每次打包都手动操作的麻烦。

第三步:安装ts-loader,typescript,这是ts语言的配置,所有用到ts开发的都必须安装这两个依赖

npm i ts-loader --save-dev
npm i typescript --save-dev

第四步:创建ts配置文件,tsconfig.json,ts的运行必须要有tsconfig文件,否则无法运行和转换成js,我的配置如下:

{
    "compilerOptions": {
        "module": "commonjs",
        "sourceMap": true,
        "target": "es5"
    },
    "include": [
        "src/*"
    ],
    "exclude": [
        "node_modules"
    ]
}

接下来安装file-loader和clean-webpack-plugin,file-loader用于资源加载配置,而clean-webpack-plugin则仅仅是打包的时候清除本地原来的打包文件,相当于保持最新,非必须

npm i file-loader --save-dev
npm i clean-webpack-plugin --save-dev

到这里所有工具依赖全部安装完成,接下来就是我们要开发的包如phaser或threejs,这里注意一定要安装到依赖环境,即--save 而不是--save-dev

npm i three --save

整个package.json依赖如下

{
  "name": "three-study",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start":"webpack-dev-server --config webpack.conf.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "clean-webpack-plugin": "^3.0.0",
    "file-loader": "^5.0.2",
    "html-webpack-plugin": "^3.2.0",
    "ts-loader": "^6.2.1",
    "typescript": "^3.7.3",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.9.0"
  },
  "dependencies": {
    "three": "^0.111.0"
  }
}

好了,接下来配置webpack.conf.js文件,让程序运行起来,我的配置如下

const path = require("path");
const HtmlWebpackPlugin = require(‘html-webpack-plugin‘);

module.exports = {
    mode:‘development‘,
    entry:‘./src/Main.ts‘,
    output:{
        path:path.resolve(__dirname,‘./public‘),
        filename:‘app.bundle.js‘
    },
    devServer:{
        //设置服务器访问的基本目录
        contentBase:path.resolve(__dirname,‘./public‘),
        host:‘172.18.27.110‘,
        port:1222, // 设置端口号
        inline:true
    },
    module:{
        rules:[
            {
                test:/\.tsx?$/,
                use:‘ts-loader‘,
                exclude:/node_modules/
            },
            {
                test:/\.(png|jpe?g|gif|svg)(\?.*)?$/,
                use:{
                    loader:‘file-loader‘,
                    options:{
                        name:‘[name].[ext]‘,
                        outputPath:‘assets/‘
                    }
                }
            }
        ]
    },
    resolve:{
        extensions:[‘.ts‘,‘.tsx‘,‘.js‘]
    },
    devtool:"eval",
    plugins:[
        new HtmlWebpackPlugin({
            template:‘index.html‘
        })
    ]
}

其中172.18.27.110是我自己电脑的局域网ip,其他各项配置均可查询官方文档,这里不再扯远。

最后一步,根目录创建一个index.html模板文件,然后创建一个src和public文件夹,public文件夹主要用来存放资源,在src下创建一个Main.ts文件,编写代码如下

import * as THREE from ‘three‘

class Main{
    constructor(){
        this.init();
    }
    private scene:THREE.Scene;
    private camera:THREE.Camera;
    private renderer:THREE.WebGLRenderer;
    private myCube:THREE.Mesh;
    private init(){
        let scene = new THREE.Scene();
        this.scene = scene;
        let camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,.01,1000);
        this.camera = camera;
        let renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth,window.innerHeight);
        document.body.appendChild(renderer.domElement);
        this.renderer = renderer;

        let geometry = new THREE.BoxGeometry(1,1,1);
        let material = new THREE.MeshBasicMaterial({color:0xfff000});
        let cube = new THREE.Mesh(geometry,material);
        scene.add(cube);
        this.myCube = cube;

        camera.position.z = 5;

        this.animate();
    }

    private animate(){
        requestAnimationFrame(this.animate.bind(this));
        this.renderer.render(this.scene,this.camera);
        this.loop();
    }

    private loop(){
        this.myCube.rotation.x += 0.01;
        this.myCube.rotation.y += 0.01;
        this.myCube.rotation.z += 0.01;
    }
}
new Main();

在命令行运行npm run start,然后打开浏览器输入172.18.27.110:1222即可看到如下效果

对于phaser,也是如此配置,这里仅仅配置里一个dev环境,其实还有个线上打包环境,我一般分成dev.conf.js和prd.conf.js,分别代表dev和生产环境,这里有个生产环境配置可作参考

const path = require("path");
const CleanWebpackPlugin = require("clean-webpack-plugin").CleanWebpackPlugin;
const HtmlWebpackPlugin = require(‘html-webpack-plugin‘);

module.exports = {
    mode:‘production‘,
    devtool:"source-map",
    entry:‘./src/Main.ts‘,
    output:{
        filename:‘js/[name].[chunkhash].js‘,
        path:path.resolve(__dirname,‘.././dist‘)
    },
    module:{
        rules:[
            {
                test:/\.tsx?$/,
                use:‘ts-loader‘,
                exclude:/node_modules/
            },
            {
                test:/\.(png|jpe?g|gif|svg)(\?.*)?$/,
                use:{
                    loader:‘file-loader‘,
                    options:{
                        name:‘[name].[ext]‘,
                        outputPath:‘assets/‘
                    }
                }
            }
        ]
    },
    resolve:{
        extensions:[‘.ts‘,‘.tsx‘,‘.js‘]
    },
    optimization:{
        splitChunks:{
            name:"vendor",
            chunks:"all"
        }
    },
    plugins:[
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin({
            template:‘index.html‘
        })
    ]
}

原文地址:https://www.cnblogs.com/wangzisheng/p/11993919.html

时间: 2024-10-29 16:48:01

webpack打包工具之ts版开发框架搭建的相关文章

超简单 webpack 打包工具入门

对前端这个岗位来说,模块化开发是必须要走的一个过程,这其中打包工具的使用必不可少,下面我就说一下 webpack 打包工具的用法,非常简单,学会它,webpack 你就入门了. 使用 webpack 前,你需要准备什么? 安装 node 淘宝镜像 cnpm(最好有) 安装 webpack 如果前两步你都已经有了,那么可以直接跳转到第三步,安装 webpack 命令行如下: 1.全局安装 webpack cnpm install -g [email protected] 这里你可以指定版本安装,也

Webpack打包工具学习使用

Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载.通过 loader 的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块. AMD 模块. ES6 模块.CSS.图片. JSON. Coffeescript. LESS 等. 一.核心概念 入口:webpack打包的入口文件 输出:这个就是对源代码打包之后,得到的文件,文件我们一般命名为

vue 之webpack打包工具的使用

一.什么是webpack? webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个.vue文件中都可能html.js.css甚至是图片资源:并且由于组件化,这些.vue文件之间还有错综复杂的关系.所以项目要被浏览器识别,我们就要使用webpack将它们打包成js文件以及相应的资源文件. 二.webpack的功能? 1.它可以吧CSS,JS图片当做模块来处理 2.它可以吧以上的这些文件进行打包压缩成一个JS文件,减少了

Webpack实战(一):Webpack打包工具安装及参数配置

为什么要模块化 javascript跟其他开发语言有很多的区别,其中一个就是没有模块化概念,如果一个项目中有多个js文件,我们只能通过script标签引入的方式,把一个个js文件插入到页面,这种做法会也引起了很多弊端: 需要手动维护JavaScript的加载顺序 多次请求资源,影响了加载速度 在每个script标签中,顶层作用域即全局作用域,如果没有任何处理而直接在代码中进行变量或函数声明,就会造成全局作用域的污染,也会造成命名冲突. 模块化很容易就避免这些问题,避免冲突,合并资源减少网络开销,

webpack 打包工具

webpack只解析js文件,其他的文件借助加载解析 webpack基础介绍 html-webpack-plugin --生成html文件 生成多个页面 .解析js文件,并输出 .解析css文件   css-loader .解析sass,less,scss,stylus文件 sass-loader/less-loader/node-sass .解析图片(png.jpg.svg.gif)file-loader/url-loader .给css添加前缀 postcss-loader autopref

使用vue-cli构建 webpack打包工具时,生产环境下,每次build时,删除dist目录,并重新生成,以防dist目录文件越来越多。

首先,需要使用webpack的插件CleanWebpackPlugin,安装命令如下: npm install --save-dev clean-webpack-plugin 其次,需要在生产环境提供的文件:build/webpack.prod.conf.js的plugins节点下添加如下代码: new CleanWebpackPlugin( ['dist'], //匹配删除的文件 { root:path.resolve(__dirname,'../')     //根目录 verbose:tr

webpack打包(一)

1.安装webpack打包工具 webpack是使用npm安装 npm install webpack -g //全局安装 在命令行中就可以使用webpack这个命令了. 提示:由于npm安装会去找国外镜像,所以安装国内淘宝cnpm镜像 npm install cnpm -g 以后所有的npm操作都用cnpm命令代替就行! 注:webpack采用的是commonJs规范 使用webpack(一) calc.js function add(x, y) { return x + y; } modul

webpack构建工具快速上手指南

最近在研究react项目,接触到webpack打包工具.刚接触的时候一脸茫然,经过最近的学习,下面我来带大家开启webpack入门之旅. webpack是什么 webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).样式(含less/sass).图片等都作为模块来使用和处理.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成少量的 bundle - 通常只

细说前端自动化打包工具--webpack

背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.做网页就和用world编辑一个文档一样,只不过那个工具叫Dreamweaver.一个html页面,夹杂着css,javascript是再常见不过的事了. 随着前端的不断发展,特别是单页应用的兴起,这种所见即所得的IDE工具,就渐渐地退出了前端的主流.一个应用,通常只有一个静态页面(index.html),甚至这个页面的body只有一个或少数几个div组成.这时有