升级到webpack4
This commit is contained in:
		
							
								
								
									
										47
									
								
								config/webpack.umd.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								config/webpack.umd.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					import * as path from 'path';
 | 
				
			||||||
 | 
					import * as webpack from 'webpack';
 | 
				
			||||||
 | 
					import ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
 | 
				
			||||||
 | 
					import * as HardSourceWebpackPlugin from 'hard-source-webpack-plugin';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const config: webpack.Configuration = {
 | 
				
			||||||
 | 
					    mode: "production",
 | 
				
			||||||
 | 
					    entry: "./src/index.ts",
 | 
				
			||||||
 | 
					    devtool: "source-map",
 | 
				
			||||||
 | 
					    //输出设置
 | 
				
			||||||
 | 
					    output: {
 | 
				
			||||||
 | 
					        filename: "cad.js",
 | 
				
			||||||
 | 
					        path: path.resolve(__dirname, '../umd'),
 | 
				
			||||||
 | 
					        library: "cad",
 | 
				
			||||||
 | 
					        libraryTarget: "umd"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    //项目需要解析的文件拓展名称
 | 
				
			||||||
 | 
					    resolve: {
 | 
				
			||||||
 | 
					        extensions: [".ts", ".tsx", ".js", "json"]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    externals: {
 | 
				
			||||||
 | 
					        'three': "THREE"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    //模块加载器设置
 | 
				
			||||||
 | 
					    module: {
 | 
				
			||||||
 | 
					        rules: [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                test: /\.tsx?$/,
 | 
				
			||||||
 | 
					                exclude: /node_modules/,
 | 
				
			||||||
 | 
					                loader: 'ts-loader',
 | 
				
			||||||
 | 
					                options: {
 | 
				
			||||||
 | 
					                    transpileOnly: true,
 | 
				
			||||||
 | 
					                    experimentalWatchApi: true,
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            { test: /\.css$/, loader: ['style-loader', 'css-loader'] },
 | 
				
			||||||
 | 
					            { test: /\.[(jpg)|(png)|(obj)|(json)]$/, loader: "url-loader" },
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    plugins: [
 | 
				
			||||||
 | 
					        new HardSourceWebpackPlugin(),
 | 
				
			||||||
 | 
					        new ForkTsCheckerWebpackPlugin({ checkSyntacticErrors: true }),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default config;
 | 
				
			||||||
							
								
								
									
										7289
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7289
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										29
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								package.json
									
									
									
									
									
								
							@@ -6,8 +6,10 @@
 | 
				
			|||||||
  "types": "dist/index.d.ts",
 | 
					  "types": "dist/index.d.ts",
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
    "build": "tsc & webpack",
 | 
					    "build": "tsc",
 | 
				
			||||||
    "dev": "tsc -w"
 | 
					    "umd": "webpack --config ./config/webpack.umd.ts",
 | 
				
			||||||
 | 
					    "dev": "tsc -w",
 | 
				
			||||||
 | 
					    "type": "ts-node ./utils/copy_type.ts"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "repository": {
 | 
					  "repository": {
 | 
				
			||||||
    "type": "git",
 | 
					    "type": "git",
 | 
				
			||||||
@@ -16,14 +18,23 @@
 | 
				
			|||||||
  "author": "cx",
 | 
					  "author": "cx",
 | 
				
			||||||
  "license": "ISC",
 | 
					  "license": "ISC",
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@types/node": "^10.1.2",
 | 
					    "@types/hard-source-webpack-plugin": "^0.9.0",
 | 
				
			||||||
    "@types/three": "^0.92.0",
 | 
					    "@types/node": "^10.7.1",
 | 
				
			||||||
    "awesome-typescript-loader": "^3.4.1",
 | 
					    "@types/three": "^0.92.17",
 | 
				
			||||||
    "typescript": "^2.8.3",
 | 
					    "@types/uglifyjs-webpack-plugin": "^1.1.0",
 | 
				
			||||||
    "uglifyjs-webpack-plugin": "^1.2.5",
 | 
					    "@types/webpack": "^4.4.10",
 | 
				
			||||||
    "webpack": "^3.10.0"
 | 
					    "awesome-typescript-loader": "^5.2.0",
 | 
				
			||||||
 | 
					    "fork-ts-checker-webpack-plugin": "^0.4.8",
 | 
				
			||||||
 | 
					    "hard-source-webpack-plugin": "^0.12.0",
 | 
				
			||||||
 | 
					    "ts-loader": "^4.4.2",
 | 
				
			||||||
 | 
					    "ts-node": "^7.0.1",
 | 
				
			||||||
 | 
					    "typescript": "^3.0.1",
 | 
				
			||||||
 | 
					    "uglifyjs-webpack-plugin": "^1.3.0",
 | 
				
			||||||
 | 
					    "webpack": "^4.16.5",
 | 
				
			||||||
 | 
					    "webpack-cli": "^3.1.0",
 | 
				
			||||||
 | 
					    "webpack-merge": "^4.1.4"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "three": "^0.92.0"
 | 
					    "three": "^0.95.0"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,14 +4,6 @@ import { KeyBoard, MouseKey } from './KeyEnum';
 | 
				
			|||||||
import { Vector3 } from 'three';
 | 
					import { Vector3 } from 'three';
 | 
				
			||||||
import { Viewer } from './Viewer';
 | 
					import { Viewer } from './Viewer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//控制类型
 | 
					 | 
				
			||||||
enum CameraControlsEnabled
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    Rotate = 1,
 | 
					 | 
				
			||||||
    Zoom = 2,
 | 
					 | 
				
			||||||
    Pan = 4,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//相机控制状态
 | 
					//相机控制状态
 | 
				
			||||||
export enum CameraControlState
 | 
					export enum CameraControlState
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
import * as THREE from 'three';
 | 
					import * as THREE from 'three';
 | 
				
			||||||
 | 
					import { LineBasicMaterial, MeshBasicMaterial, Color } from 'three';
 | 
				
			||||||
const ColorPalette = [
 | 
					const ColorPalette = [
 | 
				
			||||||
    [255, 0, 0, 255],    //----- 0 - lets make it red for an example
 | 
					    [255, 0, 0, 255],    //----- 0 - lets make it red for an example
 | 
				
			||||||
    //[255, 255, 255, 255],//----- 0 - ByBlock - White
 | 
					    //[255, 255, 255, 255],//----- 0 - ByBlock - White
 | 
				
			||||||
@@ -270,19 +271,28 @@ export class ColorMaterial
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    private constructor() { }
 | 
					    private constructor() { }
 | 
				
			||||||
    private static m_LineMaterialMap = new Map<number, THREE.LineBasicMaterial>();
 | 
					    private static m_LineMaterialMap = new Map<number, THREE.LineBasicMaterial>();
 | 
				
			||||||
    static GetLineMaterial(index): THREE.LineBasicMaterial
 | 
					    static GetLineMaterial(index): LineBasicMaterial
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (this.m_LineMaterialMap.has(index))
 | 
					        if (this.m_LineMaterialMap.has(index))
 | 
				
			||||||
            return this.m_LineMaterialMap.get(index);
 | 
					            return this.m_LineMaterialMap.get(index);
 | 
				
			||||||
        let mat = new THREE.LineBasicMaterial({ color: this.GetColor(index) });
 | 
					        let mat = new LineBasicMaterial({ color: this.GetColor(index) });
 | 
				
			||||||
        this.m_LineMaterialMap.set(index, mat);
 | 
					        this.m_LineMaterialMap.set(index, mat);
 | 
				
			||||||
        return mat;
 | 
					        return mat;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    private static m_BasicMaterialMap = new Map<number, MeshBasicMaterial>();
 | 
				
			||||||
 | 
					    static GetBasicMaterial(index: number): MeshBasicMaterial
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (this.m_BasicMaterialMap.has(index))
 | 
				
			||||||
 | 
					            return this.m_BasicMaterialMap.get(index);
 | 
				
			||||||
 | 
					        let mat = new MeshBasicMaterial({ color: this.GetColor(index) });
 | 
				
			||||||
 | 
					        this.m_BasicMaterialMap.set(index, mat);
 | 
				
			||||||
 | 
					        return mat;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static GetColor(index: number)
 | 
					    static GetColor(index: number)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let rgb = ColorPalette[index];
 | 
					        let rgb = ColorPalette[index];
 | 
				
			||||||
        if (rgb)
 | 
					        if (rgb)
 | 
				
			||||||
            return new THREE.Color(rgb[0] / 255, rgb[1] / 255, rgb[2] / 255);
 | 
					            return new Color(rgb[0] / 255, rgb[1] / 255, rgb[2] / 255);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@ export class DbText extends Mesh
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    geometry.computeBoundingBox();
 | 
					    geometry.computeBoundingBox();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    super(geometry, ColorMaterial.GetLineMaterial(5));
 | 
					    super(geometry, ColorMaterial.GetBasicMaterial(5));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let center = geometry.boundingBox.getCenter(new Vector3());
 | 
					    let center = geometry.boundingBox.getCenter(new Vector3());
 | 
				
			||||||
    this.applyMatrix(MoveMatrix(new Vector3(-center.x, 0, 0)));
 | 
					    this.applyMatrix(MoveMatrix(new Vector3(-center.x, 0, 0)));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,7 @@ export class Viewer
 | 
				
			|||||||
      let mesh = PointPick(this, e.offsetX, e.offsetY);
 | 
					      let mesh = PointPick(this, e.offsetX, e.offsetY);
 | 
				
			||||||
      if (oldMesh)
 | 
					      if (oldMesh)
 | 
				
			||||||
        oldMesh.material = boardMaterial;
 | 
					        oldMesh.material = boardMaterial;
 | 
				
			||||||
      if (mesh && mesh.material !== ColorMaterial.GetLineMaterial(1))
 | 
					      if (mesh && mesh.material !== ColorMaterial.GetBasicMaterial(1))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        oldMesh = mesh;
 | 
					        oldMesh = mesh;
 | 
				
			||||||
        mesh.material = selectMaterial;
 | 
					        mesh.material = selectMaterial;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -171,7 +171,7 @@ export function createBoard(boardData: object)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                geo.applyMatrix(boardMat);
 | 
					                geo.applyMatrix(boardMat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                let mesh = new Mesh(geo, ColorMaterial.GetLineMaterial(1));
 | 
					                let mesh = new Mesh(geo, ColorMaterial.GetBasicMaterial(1));
 | 
				
			||||||
                edges.push(mesh);
 | 
					                edges.push(mesh);
 | 
				
			||||||
                // let edge = createEdge(geo);
 | 
					                // let edge = createEdge(geo);
 | 
				
			||||||
                // edge.material = new LineBasicMaterial({ color: new Color(1, 0, 0) });
 | 
					                // edge.material = new LineBasicMaterial({ color: new Color(1, 0, 0) });
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,16 +6,17 @@
 | 
				
			|||||||
        "outDir": "./dist",
 | 
					        "outDir": "./dist",
 | 
				
			||||||
        "target": "es5",
 | 
					        "target": "es5",
 | 
				
			||||||
        "lib": [
 | 
					        "lib": [
 | 
				
			||||||
            "es2017",
 | 
					            "esnext",
 | 
				
			||||||
            "dom"
 | 
					            "dom"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "types": [
 | 
					        "types": [
 | 
				
			||||||
            "node"
 | 
					            "node",
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "module": "commonjs",
 | 
					        "module": "commonjs",
 | 
				
			||||||
        "experimentalDecorators": true
 | 
					        "experimentalDecorators": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "include": [
 | 
					    "include": [
 | 
				
			||||||
        "./src/**/*"
 | 
					        "./src/**/*",
 | 
				
			||||||
 | 
					        // "./config/**/*"
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										112
									
								
								utils/copy_type.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								utils/copy_type.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,112 @@
 | 
				
			|||||||
 | 
					import * as path from 'path';
 | 
				
			||||||
 | 
					import * as http from 'https';
 | 
				
			||||||
 | 
					import * as fs from "fs";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//修正d.ts中类型定义出现错误的问题,临时修复,因为d.ts并不能完全快速的合并我们的类型修复PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 下载文件到指定的文件地址
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param {string} url
 | 
				
			||||||
 | 
					 * @param {string} filePath
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function downLoadFile(url: string, filePath: string)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (fs.existsSync(filePath))
 | 
				
			||||||
 | 
					        fs.unlinkSync(filePath);
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        fs.mkdirSync(path.dirname(filePath));
 | 
				
			||||||
 | 
					    let file = fs.createWriteStream(filePath);
 | 
				
			||||||
 | 
					    http.get(url, function (response)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        response.pipe(file);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 拷贝文件.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param {*} source 目标文件的地址
 | 
				
			||||||
 | 
					 * @param {*} targetFile 拷贝到新的地址
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function copyFileSync(source: string, targetFile: string)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    //if target is a directory a new file with the same name will be created
 | 
				
			||||||
 | 
					    if (fs.existsSync(targetFile))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (fs.lstatSync(targetFile).isDirectory())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            targetFile = path.join(targetFile, path.basename(source));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    fs.writeFileSync(targetFile, fs.readFileSync(source));
 | 
				
			||||||
 | 
					    console.log('targetFile: ', targetFile);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function copyFolderRecursiveSync(source, target)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    let files = [];
 | 
				
			||||||
 | 
					    //check if folder needs to be created or integrated
 | 
				
			||||||
 | 
					    let targetFolder = path.join(target, path.basename(source));
 | 
				
			||||||
 | 
					    if (!fs.existsSync(targetFolder))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        fs.mkdirSync(targetFolder);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    //copy
 | 
				
			||||||
 | 
					    if (fs.lstatSync(source).isDirectory())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        files = fs.readdirSync(source);
 | 
				
			||||||
 | 
					        files.forEach(function (file)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            let curSource = path.join(source, file);
 | 
				
			||||||
 | 
					            if (fs.lstatSync(curSource).isDirectory())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                copyFolderRecursiveSync(curSource, targetFolder);
 | 
				
			||||||
 | 
					            } else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                copyFileSync(curSource, targetFolder);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// copyFolderRecursiveSync("./@types/", "./node_modules/");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function downloadTypes(downFiles)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    let filePath = path.resolve("./node_modules/@types/" + downFiles.name) + "\\";
 | 
				
			||||||
 | 
					    console.log('filePath: ', filePath);
 | 
				
			||||||
 | 
					    for (let file of downFiles.files)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        console.log(downFiles.urlPath + file);
 | 
				
			||||||
 | 
					        try
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            downLoadFile(downFiles.urlPath + file, filePath + file);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch (error)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            console.log('error: ', error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					downloadTypes({
 | 
				
			||||||
 | 
					    name: "three",
 | 
				
			||||||
 | 
					    urlPath: "https://gitee.com/BearCAD/DefinitelyType2/raw/master/three/",
 | 
				
			||||||
 | 
					    files: [
 | 
				
			||||||
 | 
					        // "index.d.ts",
 | 
				
			||||||
 | 
					        "three-core.d.ts",
 | 
				
			||||||
 | 
					        // "three-outlinepass.d.ts",
 | 
				
			||||||
 | 
					        // "three-smaapass.d.ts"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					downloadTypes({
 | 
				
			||||||
 | 
					    name: "jquery",
 | 
				
			||||||
 | 
					    urlPath: "https://gitee.com/BearCAD/DefinitelyType2/raw/master/jquery/",
 | 
				
			||||||
 | 
					    files: [
 | 
				
			||||||
 | 
					        "index.d.ts"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@@ -1,73 +0,0 @@
 | 
				
			|||||||
const webpack = require('webpack');
 | 
					 | 
				
			||||||
const path = require('path');
 | 
					 | 
				
			||||||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function getpath(fileName)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return path.resolve(__dirname, fileName);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = {
 | 
					 | 
				
			||||||
    //项目入口
 | 
					 | 
				
			||||||
    entry: "./src/index.ts",
 | 
					 | 
				
			||||||
    //输出设置
 | 
					 | 
				
			||||||
    output: {
 | 
					 | 
				
			||||||
        filename: "cad.js",
 | 
					 | 
				
			||||||
        path: path.resolve(__dirname, 'umd'),
 | 
					 | 
				
			||||||
        library: {
 | 
					 | 
				
			||||||
            // root: "cadview",
 | 
					 | 
				
			||||||
            // amd: "cadview",
 | 
					 | 
				
			||||||
            commonjs: "cad"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        libraryTarget: "umd"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    //调试工具
 | 
					 | 
				
			||||||
    // devtool: "source-map",
 | 
					 | 
				
			||||||
    //项目需要解析的文件拓展名称
 | 
					 | 
				
			||||||
    resolve: {
 | 
					 | 
				
			||||||
        extensions: [".ts", ".tsx", ".js", "json"]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    externals: {
 | 
					 | 
				
			||||||
        'three': {
 | 
					 | 
				
			||||||
            // amd: 'three',
 | 
					 | 
				
			||||||
            commonjs: 'three',
 | 
					 | 
				
			||||||
            root: "THREE",
 | 
					 | 
				
			||||||
            commonjs2: "three"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    //模块加载器设置
 | 
					 | 
				
			||||||
    module: {
 | 
					 | 
				
			||||||
        loaders: [
 | 
					 | 
				
			||||||
            { test: /\.tsx?$/, loader: "awesome-typescript-loader" },
 | 
					 | 
				
			||||||
            { test: /\.css$/, loader: ['style-loader', 'css-loader'] },
 | 
					 | 
				
			||||||
            { test: /\.[(jpg)|(png)|(obj)|(json)]$/, loader: "url-loader" },
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    //插件
 | 
					 | 
				
			||||||
    plugins: [
 | 
					 | 
				
			||||||
        new webpack.DefinePlugin({
 | 
					 | 
				
			||||||
            'process.env.NODE_ENV': JSON.stringify('production')
 | 
					 | 
				
			||||||
        }),
 | 
					 | 
				
			||||||
        new UglifyJsPlugin(
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                uglifyOptions:
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        compress: {
 | 
					 | 
				
			||||||
                            warnings: false,
 | 
					 | 
				
			||||||
                            conditionals: true,
 | 
					 | 
				
			||||||
                            unused: true,
 | 
					 | 
				
			||||||
                            comparisons: true,
 | 
					 | 
				
			||||||
                            sequences: true,
 | 
					 | 
				
			||||||
                            dead_code: true,
 | 
					 | 
				
			||||||
                            evaluate: true,
 | 
					 | 
				
			||||||
                            if_return: true,
 | 
					 | 
				
			||||||
                            join_vars: true
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        output: {
 | 
					 | 
				
			||||||
                            comments: false
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
            }),
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user