typescript打包成类库 typescript编译成一个文件

一、typeScript安装以及基础编译

npm i -g typescript

安装完,进入ts文件的项目目录下,在命令行执行    tsc hello.ts(hello.ts是ts文件,执行这个命令可以把ts文件编译为hello.js文件)

tsc hello.ts

 这个命令,ts文件里的代码每改变一次,需要执行一次。

如果要实时编译  需要  执行以下命令

tsc hello.ts -w

上面这种方法,只是针对单个文件。如果我们需要对批量的ts文件,进行实时编译,那么我们就需要在根目录下创建一个tsconfig.js文件

二、ts的tsconfig.json配置文件

// npm init -y  对项目进行初始化,在项目下生成package.json
// npm i -D webpack webpack-cli typescript ts-loader  可以生成node_modules
// npm i -D html-webpack-plugin

// tsc -w

// npm i -D webpack-dev-server  内置服务器,自动刷新
// npm i -D clean-webpack-plugin
// npm i -D @babel/core @babel/preset-env babel-loader core-js   适配不同的浏览器
// npm i -D postcss postcss-loader postcss-preset-env

{
    // include代表需要编译哪些文件;路径:两个**,代表当前文件下的所有目录,一个*代表当前文件夹下的所有文件
    "include": [
        "./src/**/*"
    ],

    // 不需要被编译的文件
    "exclude": [
        "./src/hello/**/*"
    ],

    // 定义被继承得配置文件
    // "extends":"",

    // 需要编译的文件,一个一个放这里;
    // "files": [

    // ],

    // 编译器的选项
    "compilerOptions": {

        // 用來指定ts被编译的ES的版本  "target":"esnext"这是最新版本
        "target": "ES6",

        // 指定要使用的模块化规范
        // "module": "es2015",
        // "module":"CommonJS"
        "module": "system",

        // 用来指定项目中用到的库
        "lib": [
            "DOM",
            "ES6"
        ],

        // 用来指定编译后文件所在的目录,编译后的文件放在哪
        "outDir": "./dist",

        // 所有全局作用域中的代码合并为一个文件,如果要使用模块化,必须这么设置模块化"module":"system"
        "outFile": "./dist/app.js",

        // 是否对js文件进行编译,默认是false
        "allowJs": true,

        // 检查js代码是否符合逻辑规范,默认是false
        "checkJs": true,

        //是否移除注释
        "removeComments": true,

        // 不生成编译后的文件,只是执行过程,只是检查语法
        "noEmit": false,

        //当有错误的时候不生成编译后的文件
        "noEmitOnError": true,

        //所有严格检查的总开关
        "strict": false,

        // 用来设置编译后的文件,是否采用严格模式
        "alwaysStrict": true,

        // 不允许出现隐式的any类型
        "noImplicitAny": true,

        // 不允许出现隐式的this
        "noImplicitThis": true,

        // 严格的检查空值  例:div不存在,在获取dom的时候
        "strictNullChecks": true,
        
    }
    
}

三、使用webpack打包

1、安装依赖

npm install  webpack webpack-cli typescript ts-loader  --save -dev

 

2、webpack配置webpack.config.js

// 引入一个包
const path = require("path");
// 引入html文件
const HTMLWebpackPlugin = require('html-webpack-plugin');
// 引入clean插件
const { CleanWebpackPlugin } = require('clean-webpack-plugin')


// webpack中的所有配置信息,都应该写在这里
module.exports = {

    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output:{

        // 指定打包文件的目录
        path:path.resolve(__dirname,'dist'),

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

        // 告诉webpack不适用箭头
        environment:{
            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的方式  按需加载
                                        "useBuiltIns":"usage"

                                    }
                                ]
                            ]

                        }
                    },
                    'ts-loader'
                ],
                // 要排除的文件
                exclude:/node-modules/

            },
            // 设置less文件的处理
            {
                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({
            // title:"这是一个自定义的title"
            template:'./src/index.html'
        })
    ],

    // 用来设置那些后缀名可以设置引用模块
    resolve:{
        extensions:['.ts','.js']
    }

}

3、package.json添回执行脚本

4、在终端执行命令

 npm run build

 

posted @ 2023-10-13 17:35  ziff123  阅读(1034)  评论(0编辑  收藏  举报