浏览代码

Added webpack build for grunt, issue #103 (#127)

Benjamin Giesinger 7 年之前
父节点
当前提交
d165ba1eeb
共有 2 个文件被更改,包括 44 次插入1 次删除
  1. 39 0
      Gruntfile.js
  2. 5 1
      package.json

+ 39 - 0
Gruntfile.js

@@ -1,4 +1,7 @@
 /*global module*/
 /*global module*/
+var webpack = require('webpack');
+var path = require('path');
+
 module.exports = function (grunt) {
 module.exports = function (grunt) {
     'use strict';
     'use strict';
 
 
@@ -81,6 +84,40 @@ module.exports = function (grunt) {
                 }
                 }
             }
             }
         },
         },
+        // Webpack
+        webpack: {
+          build: {
+            entry: ['./src/OSMD/OSMD.ts'],
+            output: {
+                path: path.resolve(__dirname, 'build'),
+                filename: 'osmd.js'
+             },
+             resolve: {
+                 // Add '.ts' and '.tsx' as a resolvable extension.
+                 extensions: ['.webpack.js', '.web.js', '.ts', '.tsx', '.js']
+             },
+             module: {
+                 loaders: [
+                     // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
+                     { test: /\.tsx?$/, loader: 'ts-loader' }
+                 ]
+             },
+    				 plugins: [
+               // build optimization plugins
+               new webpack.LoaderOptionsPlugin({
+                minimize: true,
+                debug: false
+              }),
+    					new webpack.optimize.UglifyJsPlugin({
+                  warnings: false,
+                  beautify: false,
+                  compress: true,
+                  comments: false,
+                  sourceMap: true
+                })
+    				]
+    			}
+        },
         // Karma setup
         // Karma setup
         karma: {
         karma: {
             // For continuous integration
             // For continuous integration
@@ -158,11 +195,13 @@ module.exports = function (grunt) {
     grunt.loadNpmTasks('grunt-http-server');
     grunt.loadNpmTasks('grunt-http-server');
     grunt.loadNpmTasks('grunt-karma');
     grunt.loadNpmTasks('grunt-karma');
     grunt.loadNpmTasks('grunt-ts');
     grunt.loadNpmTasks('grunt-ts');
+    grunt.loadNpmTasks('grunt-webpack');
 
 
     // Build tasks
     // Build tasks
     grunt.registerTask('build:demo',  'Builds the demo.',                            ['browserify:debug', 'copy:demo']);
     grunt.registerTask('build:demo',  'Builds the demo.',                            ['browserify:debug', 'copy:demo']);
     grunt.registerTask('build:test',  'Builds the tests',                            ['browserify:test']);
     grunt.registerTask('build:test',  'Builds the tests',                            ['browserify:test']);
     grunt.registerTask('build:dist',  'Builds for distribution on npm and Bower.',   ['browserify:dist', 'uglify', 'ts']);
     grunt.registerTask('build:dist',  'Builds for distribution on npm and Bower.',   ['browserify:dist', 'uglify', 'ts']);
+    grunt.registerTask('build:pack',  'Builds using webpack',                        ['webpack:build', 'uglify']);
 
 
     // Tests
     // Tests
     grunt.registerTask('test',        'Runs unit, regression and e2e tests.',        ['build:test', 'karma:ci']);
     grunt.registerTask('test',        'Runs unit, regression and e2e tests.',        ['build:test', 'karma:ci']);

+ 5 - 1
package.json

@@ -71,6 +71,7 @@
     "grunt-http-server": "",
     "grunt-http-server": "",
     "grunt-karma": "^2.0.0",
     "grunt-karma": "^2.0.0",
     "grunt-ts": "^6.0.0-beta.3",
     "grunt-ts": "^6.0.0-beta.3",
+    "grunt-webpack": "^3.0.0",
     "http-server": "^0.10.0",
     "http-server": "^0.10.0",
     "jshint": "^2.9.4",
     "jshint": "^2.9.4",
     "karma": "^1.1.1",
     "karma": "^1.1.1",
@@ -86,10 +87,13 @@
     "phantomjs-prebuilt": "^2.1.8",
     "phantomjs-prebuilt": "^2.1.8",
     "pre-commit": "^1.2.2",
     "pre-commit": "^1.2.2",
     "rimraf": "^2.6.1",
     "rimraf": "^2.6.1",
+    "ts-loader": "^2.0.3",
     "tsify": "^3.0.0",
     "tsify": "^3.0.0",
     "tslint": "^5.0.0",
     "tslint": "^5.0.0",
     "typedoc": "^0.7.0",
     "typedoc": "^0.7.0",
-    "typescript": "^2.2.2"
+    "typescript": "^2.2.2",
+    "uglifyjs-webpack-plugin": "^0.4.3",
+    "webpack": "^2.5.1"
   },
   },
   "config": {
   "config": {
     "commitizen": {
     "commitizen": {