• webpack+TypeScript搭建工程化项目


    1、初始化项目:npm init -y 生成package.json文件;

    2、安装构建工具:

    2-1、webpack //构建工具;

    2-2、webpack-cli //webpack命令行工具;

    2-3、webpack-dev-server //webpack开发服务器;

    2-4、typescript //ts编译器;

    2-5、ts-loader //ts加载器、用于在webpack中编译ts文件;

    2-6、html-webpack-plugin //webpakc中html插件,用于自动创建html文件;

    2-7、clean-webpack-plugin //webpack中的清除插件,用于每一次构建时都清理打包目录下的文件。

    安装方式:npm install -D webpack webpack-cli webpack-dev-server html-webpack-plugin clean-webpack-plugin typescript ts-loader

    3、根目录下创建:webpack的配置文件webpack.config.js

    1. const path = require("path");
    2. const HtmlWebpackPlugin = require("html-webpack-plugin");
    3. const {
    4. CleanWebpackPlugin
    5. } = require("clean-webpack-plugin");
    6. module.exports = {
    7. optimization: {
    8. minimize: false // 关闭代码压缩,可选
    9. },
    10. mode: "none",//'development' 、 'production'、'none'
    11. entry: "./src/index.ts",
    12. // devServer: {
    13. // open: true,
    14. // port: 8081,
    15. // },
    16. // devtool: "inline-source-map",
    17. // performance :{
    18. // maxEntrypointSize: 10000000,
    19. // maxAssetSize: 30000000
    20. // },
    21. output: {
    22. path: path.resolve(__dirname, "dist"),
    23. filename: "bundle.js",
    24. environment: {
    25. arrowFunction: false // 关闭webpack的箭头函数,可选
    26. }
    27. },
    28. resolve: {
    29. //表示在import 文件时文件后缀名可以不写
    30. extensions:['.js','.jsx','.json'],
    31. //表示设置路径别名这样在import的文件在src下的时候可以直接 @/component/...
    32. alias:{
    33. '@':path.join(__dirname,'./src')
    34. }
    35. },
    36. module: {
    37. rules: [{
    38. test: /\.ts$/,
    39. use: {
    40. loader: "ts-loader"
    41. },
    42. exclude: /node_modules/
    43. }]
    44. },
    45. plugins: [
    46. new CleanWebpackPlugin(),
    47. new HtmlWebpackPlugin({
    48. title: 'TS测试'
    49. }),
    50. ]
    51. }

    4、根目录下创建tsconfig.json,或者使用tsc -init

    1. {
    2. "compilerOptions": {
    3. "target": "ES2015",
    4. "module": "ES2015",
    5. "strict": true
    6. }
    7. }

    5. 修改package.json添加如下配置

    1. {
    2. ...略...
    3. "scripts": {
    4. "test": "echo \"Error: no test specified\" && exit 1",
    5. "build": "webpack",
    6. "dev": "webpack-dev-server --open"
    7. }
    8. ...略...
    9. }

    6、在 根目录下创建scr目录,并添加index.ts文件

    运行:npm run build 打包 npm run dev 运行开发服务器

    7、处理兼容问题:安装babel相关包

    7-1:@babel/core // babel的核心工具

    7-2:@babel/preset-evn //babel预设环境

    7-3:babel-loader //babel在webpack中的加载器

    7-4:core-js //用来把JS的新语法转成低版本的JS语法,兼容老版本的浏览器

    安装:npm install -D @babel/core @babel/preset-env babel-loader core-js

    8:修改webpack.config.js配置文件

    完整的webpack配置如下:

    1. const path = require("path");
    2. const HtmlWebpackPlugin = require("html-webpack-plugin");
    3. const {
    4. CleanWebpackPlugin
    5. } = require("clean-webpack-plugin");
    6. module.exports = {
    7. optimization: {
    8. minimize: false // 关闭代码压缩,可选
    9. },
    10. mode: "none", //'development' 、 'production'、'none'
    11. entry: "./src/index.ts",
    12. // devServer: {
    13. // open: true,
    14. // port: 8081,
    15. // },
    16. // devtool: "inline-source-map",
    17. // performance :{
    18. // maxEntrypointSize: 10000000,
    19. // maxAssetSize: 30000000
    20. // },
    21. output: {
    22. path: path.resolve(__dirname, "dist"),
    23. filename: "bundle.js",
    24. environment: {
    25. arrowFunction: false // 关闭webpack的箭头函数,可选
    26. }
    27. },
    28. resolve: {
    29. extensions: [".ts", ".js"]
    30. },
    31. plugins: [
    32. new CleanWebpackPlugin(),
    33. new HtmlWebpackPlugin({
    34. title: 'TS测试',
    35. template: './src/index.html'
    36. }),
    37. ],
    38. module: {
    39. rules: [{
    40. test: /\.ts$/,
    41. use: [
    42. {
    43. loader: "babel-loader",
    44. options: {
    45. presets: [
    46. [
    47. '@babel/preset-env',
    48. {
    49. targets: {
    50. chrome: 88,
    51. ie: 11
    52. },
    53. corejs: 3,
    54. useBuiltIns: "usage" //按需加载
    55. }
    56. ]
    57. ]
    58. }
    59. },
    60. {
    61. loader: "ts-loader"
    62. }
    63. ],
    64. exclude: /node_modules/
    65. }]
    66. }
    67. }

    9:npm run build 

    targets设置chrome 88的版本 经过babel处理

     

    10:npm run build 

    targets设置ie 88的版本 经过babel处理

  • 相关阅读:
    5.中间件
    UE4实现断线重连功能
    电脑为什么会卡、CPU和内存的重要性、选哪个好呢?
    绘制文字(QFont字体)
    浅谈Java中Stream流关闭
    传统图像增强三大类别:点增强、空域增强、频域增强
    【JVM】内存快照分析工具Jprofiler
    小白系统初始化配置资源失败怎么办
    软件测试中的树莓酱定律
    在阿里云的函数计算上部署
  • 原文地址:https://blog.csdn.net/meng_xiaoxiao/article/details/126279701