• [笔记]ng2的webpack配置


    欢迎吐槽

      前言

        angular.cn教程中用的是systemjs加载器,那用webpack应该怎么配置呢?本文 demo: https://github.com/LeventZheng/angular2-practice-colloection ( 非本人,而是群里大神共享的一份资料,感谢 )。webpack通过这份文件能实现:typescript转码,html、css、图片加载,less支持,区分开发环境,热更新,启动浏览器自动打开

      文件结构

        

     

      如何引入

    // 组件中
    @Component template: require('./app.component.html'), styles: [ require('./app.component.css') ]
    //或者less支持
    styles: [
      require('./app.component.less").toString( )
    ]

      config -- helper.js

    var path = require('path');
    var _root = path.resolve(__dirname, '..');
    function root(args) {
      args = Array.prototype.slice.call(arguments, 0);
      return path.join.apply(path, [_root].concat(args));
    }
    exports.root = root;
    

      config -- webpack.dev.config.js

    var webpack = require('webpack');
    var helper = require('./helper.js');
    
    var HtmlWebpackPlugin = require('html-webpack-plugin');
    var ExtractTextPlugin = require('extract-text-webpack-plugin');
    var OpenBrowserPlugin = require('open-browser-webpack-plugin');
    
    
    module.exports = {
    	devtool: 'cheap-module-eval-source-map',
    
    	entry: {
    	    'polyfills': './app/polyfills.ts', // 补丁包
    	    'vendor': './app/vendor.ts', // 库包,包含@angular/core等
    	    'app': './app/main.ts' // 入口文件
    	},
    
    	output: {
    	    path: helper.root('dist'),
    	    publicPath: 'http://localhost:8080/',
    	    filename: '[name].js',
    	    chunkFilename: '[id].chunk.js'
    	},
    
    	resolve: {
    	    extensions: ['', '.js', '.ts']
    	},
    
    	module: {
    	    loaders: [
    	      {
    	        test: /.ts$/,
    	        loaders: ['awesome-typescript-loader', 'angular2-template-loader']
    	      },
    	      {
    	        test: /.html$/,
    	        loader: 'html'
    	      },
    	      {
    	        test: /.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
    	        loader: 'file?name=assets/[name].[hash].[ext]'
    	      },
    	      {
    	        test: /.css$/,
    	        exclude: helper.root('app'),
    	        loader: ExtractTextPlugin.extract('style', 'css?sourceMap')
    	      },
    	      {
    	        test: /.css$/,
    	        include: helper.root('app'),
    	        loader: 'raw'
    	      }
    	    ]
    	},
    
    	plugins: [
    	    new webpack.optimize.CommonsChunkPlugin({
    	      name: ['app', 'vendor', 'polyfills']
    	    }),
    
    	    new HtmlWebpackPlugin({
    	      template: 'app/index.html'
    	    }), // 新建入口文件,并自动引入全部脚本 配合浏览器自动打开插件很方便
    
    	    new ExtractTextPlugin('[name].css'),
    
    	    new OpenBrowserPlugin({
    	      url: 'http://localhost:8080'
    	    }), // 浏览器自动打开
    
    	    new webpack.DefinePlugin({
    	    	_ENV_: 'production'
    	    })
        ],
    
        devServer: {
    	    historyApiFallback: true,
    	    stats: 'minimal'
    	}
    
    };
    

      补丁文件-- polyfills.ts

    import 'core-js/es6';
    import 'core-js/es7/reflect';
    require('zone.js/dist/zone');
    if (process.env.ENV === 'production') {
      // Production
    } else {
      // Development
      Error['stackTraceLimit'] = Infinity;
      require('zone.js/dist/long-stack-trace-zone');
    }

        vendor文件-- vendor.ts

    // Angular
    import '@angular/platform-browser';
    import '@angular/platform-browser-dynamic';
    import '@angular/core';
    import '@angular/common';
    import '@angular/http';
    import '@angular/router';
    // RxJS
    import 'rxjs';
    // Other vendors for example jQuery, Lodash or Bootstrap
    // You can import js, ts, css, sass, ...

      package.json ( npm start 实现热更新 )

    {
      "name": "web-pc-manage-system-2",
      "version": "0.0.1",
      "description": "web-pc-manage-system-2",
      "scripts": {
        "start": "webpack-dev-server --config config/webpack.config.dev.js --inline --hot --progress --port 8080",
        "build": "rimraf dist && webpack --config config/webpack.prod.js --progress --profile --bail"
      },
      "licenses": [
        {
          "type": "MIT",
          "url": "https://github.com/angular/angular.io/blob/master/LICENSE"
        }
      ],
      "dependencies": {
        "@angular/common": "~2.1.0",
        "@angular/compiler": "~2.1.0",
        "@angular/core": "~2.1.0",
        "@angular/forms": "~2.1.0",
        "@angular/http": "~2.1.0",
        "@angular/platform-browser": "~2.1.0",
        "@angular/platform-browser-dynamic": "~2.1.0",
        "@angular/router": "~3.1.0",
        "core-js": "^2.4.1",
        "rxjs": "5.0.0-beta.12",
        "zone.js": "^0.6.25"
      },
      "devDependencies": {
        "angular2-template-loader": "^0.4.0",
        "awesome-typescript-loader": "^2.2.4",
        "css-loader": "^0.23.1",
        "extract-text-webpack-plugin": "^1.0.1",
        "file-loader": "^0.8.5",
        "html-loader": "^0.4.3",
        "html-webpack-plugin": "^2.15.0",
        "jasmine-core": "^2.4.1",
        "karma": "^1.2.0",
        "karma-jasmine": "^1.0.2",
        "karma-phantomjs-launcher": "^1.0.2",
        "karma-sourcemap-loader": "^0.3.7",
        "karma-webpack": "^1.8.0",
        "null-loader": "^0.1.1",
        "open-browser-webpack-plugin": "0.0.2",
        "phantomjs-prebuilt": "^2.1.7",
        "raw-loader": "^0.5.1",
        "rimraf": "^2.5.2",
        "style-loader": "^0.13.1",
        "typescript": "^2.0.2",
        "typings": "^1.3.2",
       "to-string-loader": "^1.1.5", "webpack": "^1.13.0", "webpack-dev-server": "^1.14.1", "webpack-merge": "^0.14.0" } }

      

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Chromium GN构建工具的使用
    cef 不更新编译
    Debugging SSL on Linux
    chromium url 请求流程
    mim
    qt打包发布问题 缺失qt动态库
    qmake生成pro的make总失败。但是qt creator里面是好的
    qt 与 x11 头文件同时引用
    Ubuntu16安装GTK+2.0教程
    gcc编译静态库到自己的程序 解决在不同linux下因libc版本问题而不能运行 版本兼容问题
  • 原文地址:https://www.cnblogs.com/BestMePeng/p/AngularJS2_webpack.html
Copyright © 2020-2023  润新知