搭建ts项目

创建项目

创建文件夹,复制以下文件:

package.json:

{
  "name": "03",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "webpack --mode development",
    "build": "webpack --mode production",
    "start": "webpack serve --open chrome.exe"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "nodemon": "^2.0.12",
    "typescript": "^4.3.5"
  },
  "devDependencies": {
    "@babel/core": "^7.15.0",
    "@babel/preset-env": "^7.15.0",
    "babel-loader": "^8.2.2",
    "clean-webpack-plugin": "^4.0.0-alpha.0",
    "core-js": "^3.16.4",
    "html-webpack-plugin": "^5.3.2",
    "ts-loader": "^9.2.5",
    "webpack": "^5.49.0",
    "webpack-cli": "^4.7.2",
    "webpack-dev-server": "^3.11.2"
  }
}

tsconfig.json:

{
    "compilerOptions": {
      "target": "es2015", //用来指定ts被编译为js的版本
      "module": "es2015", //指定要使用模块化的规范
      "moduleResolution": "node",
      "experimentalDecorators": true,
      "allowSyntheticDefaultImports": true,
      "sourceMap": true,
      "strict": true, //检查严格模式总开关
      "strictNullChecks": false, //严格检查空值
      "noImplicitAny": true, //不允许隐式的any类型
      "noImplicitThis": false, //不允许明确类型的this
      "alwaysStrict": false, //编译后是否使用严格模式
      "allowJs": false,  //是否对js文件进行编译 默认是false
      "checkJs": false, //检查js代码是否符合语法规范 默认是false
      "declaration": true,
      "removeComments": false, //编译成js后是否移除注释
      "noImplicitReturns": true,
      "noEmit": false, //不生成编译后的文件
      "noEmitOnError": false, //有错误时不生成编译文件 
      "importHelpers": true,
      "lib": ["es6", "dom"], //指定项目中所用到的库
      "typeRoots": ["node_modules/@types"],
      "outDir": "./js", //用来指定编译后文件所在路径
      "rootDir": "./src",
      // "outFile": "./js/main.js" //将代码合并成一个文件,模块化规范需要为amd或者system
    },
    "include": ["./src/**/*"], //被编译的文件目录
    "exclude": ["node_modules", "dist", "**/*.test.ts"]  //不希望被编译的文件
  }

webpack.config.js:

const path = require("path")

const HTMLWebpackPlugin = require("html-webpack-plugin")

const { CleanWebpackPlugin } = require('clean-webpack-plugin');


// webpack的配置信息都应该写在module.exports里

module.exports = {
    //指定入口文件
    entry: "./src/index.ts",

    //指定打包文件所在路径
    output: {
        //指定打包文件的目录
        path: path.resolve(__dirname, 'dist'),

        //打包后的文件
        filename: "bundle.js",

        //配置打包环境
        environment:{
            //告诉webpack不使用箭头
            arrowFunction: false
        }
    },

    //webpack打包时需要使用的模块
    module: {
        //指定要加载的规则
        rules: [
            {
                //test指定的是规则生效的文件
                test: /\.ts$/,
                //要使用的loader

                
                use:[
                    //配置babel
                    {
                        //指定加载器
                        loader: "babel-loader",
                        //设置babel
                        options:{
                            //设置预定义的环境
                            presets:[
                                [
                                    //指定环境的插件
                                    "@babel/preset-env",
                                    //配置信息
                                    {
                                        //要兼容的目标浏览器
                                        targets:{
                                            "chrome": "88"
                                        },
                                        //指定corejs的版本
                                        "corejs":"3",
                                        //使用corejs的方法 "usage"表示按需加载
                                        "useBuiltIns":"usage"

                                    }

                                ]
                            ]
                        }
                    },
                    "ts-loader",
                ],
                
                //要排除的文件
                exclude: /node-module/
            },
            {
                test: /\.less$/,
                use:[
                    "style-loader",
                    "css-loader",
                    // 引入postcss
                    {
                        loader: "postcss-loader",
                        options: {
                            postcssOptions: {
                                plugins: [
                                    [
                                        "postcss-preset-env",
                                        {
                                            browsers: 'last 2 versions'
                                        }
                                    ]
                                ]
                            }
                        }
                    },
                    "less-loader"
                ]
            }
        ]
    },

    //配置webpack插件
    plugins:[
        new CleanWebpackPlugin(),
        new HTMLWebpackPlugin({
            template: "./src/index.html"
        }),
    ],

    //用来设置引用模块
    resolve:{
        extensions: ['.ts', '.js']
    }
}

使用命令安装依赖:

npm install

创建src文件夹,然后创建index.html与index.ts,运行命令;

npm run build

安装less

npm i -D less less-loader css-loader style-loader

安装postcss可以使浏览器兼容预处理环境

npm i -D postcss postcss-loader postcss-preset-env

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值