zoukankan      html  css  js  c++  java
  • react: typescript-webpack项目基本配置

    1、webpack.config.js basic

    const webpack = require('webpack');
    const autoprefixer = require('autoprefixer');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
        entry: "./src/index.tsx",
        output: {
            filename: "bundle.js",
            path: __dirname + "/dist"
        },
    
        // Enable sourcemaps for debugging webpack's output.
        devtool: "source-map",
    
        resolve: {
            // Add '.ts' and '.tsx' as resolvable extensions.
            extensions: [".ts", ".tsx", ".js", ".json"]
        },
    
        module: {
            rules: [
                // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
                {
                    test: /.tsx?$/,
                    loader: "awesome-typescript-loader",
                    options: {
                      plugins: [
                        ['import', [{ libraryName: 'antd', style: true }]],  // import less
                      ],
                    }
                  },
    
                // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
                { 
                    test: /.js$/, 
                    enforce: "pre",
                     loader: "source-map-loader"
                     },
    
                {
                    test: /.less$/,
                    use: [
                      require.resolve('style-loader'),
                      require.resolve('css-loader'),
                      {
                        loader: require.resolve('postcss-loader'),
                        options: {
                          ident: 'postcss', // https://webpack.js.org/guides/migrating/#complex-options
                          plugins: () => [
                            require('postcss-flexbugs-fixes'),
                            autoprefixer({
                              browsers: [
                                '>1%',
                                'last 4 versions',
                                'Firefox ESR',
                                'not ie < 9', // React doesn't support IE8 anyway
                              ],
                              flexbox: 'no-2009',
                            }),
                          ],
                        },
                      },
                      {
                        loader: require.resolve('less-loader'),
                        options: {
                          modifyVars: { "@primary-color": "#000000" },
                        },
                      },
                    ],
                  },
                // "style" loader turns CSS into JS modules that inject <style> tags.
                // in development "style" loader enables hot editing of CSS.
                // "css" loader resolves paths in CSS and adds assets as dependencies.
                {
                    test: /.css$/,
                    use: [
                        require.resolve('style-loader'),
                        {
                            loader: 'css-loader',
                            options: {
                                importLoaders: 1,
                            },
                        },
                        {
                            loader: require.resolve('postcss-loader'),
                            options: {
                                ident: 'postcss', // https://webpack.js.org/guides/migrating/#complex-options
                                plugins: () => [
                                    require('postcss-flexbugs-fixes'),
                                    autoprefixer({
                                        browsers: [
                                            '>1%',
                                            'last 4 versions',
                                            'Firefox ESR',
                                            'not ie < 9', // React doesn't support IE8 anyway
                                        ],
                                        flexbox: 'no-2009',
                                    }),
                                ],
                            },
                        },
                    ],
                }
                // "postcss" loader applies autoprefixer to our CSS.
            ]
            // In production, we use a plugin to extract that CSS to a file, but
        },
    
        // When importing a module whose path matches one of the following, just
        // assume a corresponding global variable exists and use that instead.
        // This is important because it allows us to avoid bundling all of our
        // dependencies, which allows browsers to cache those libraries between builds.
        externals: {
            "react": "React",
            "react-dom": "ReactDOM"
        },
        plugins: [
            new HtmlWebpackPlugin({
                template: './src/index.html',
                filename: 'index.html'
            }),
            new webpack.DefinePlugin({
                'process.env.NODE_ENV': JSON.stringify('development')
            })
        ]
    };

    2、tsconfig.js

    {
      "compilerOptions": {
        "baseUrl": ".",
        "outDir": "dist",
        "rootDir": "src",
        "module": "esnext",
        "target": "es5",
        "lib": [
          "es6",
          "dom"
        ],
        "sourceMap": true,
        "allowJs": true,
        "jsx": "react",
        "moduleResolution": "node",
        "forceConsistentCasingInFileNames": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noImplicitAny": true,
        "importHelpers": true,
        "strictNullChecks": true,
        "suppressImplicitAnyIndexErrors": true,
        "noUnusedLocals": true
      },
      "exclude": [
        "node_modules",
        "dist",
        "scripts",
        "acceptance-tests",
        "webpack",
        "jest",
        "src/setupTests.ts"
      ],
      "include": [
        "./src/**/*"
      ]
    }
  • 相关阅读:
    linux下程序运行时间的获取方法,
    网络通信过程(转&自己完善)
    关于找工作&毕设
    linux进程间通信(IPC)几种方式
    asp.net2.0新特性概述 之二
    vs2005新特性
    C#高级特性
    Asp.net2.0新特性 之三
    当前流行的网站设计风格(转贴)
    ASP.NET 2.0 新特性 之一
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/10383820.html
Copyright © 2011-2022 走看看