瀏覽代碼

dist build

Evan You 9 年之前
父節點
當前提交
3c6d085ab8
共有 3 個文件被更改,包括 86 次插入6 次删除
  1. 8 1
      .babelrc
  2. 70 0
      build/build.js
  3. 8 5
      package.json

+ 8 - 1
.babelrc

@@ -1,3 +1,10 @@
 {
 {
-  "presets": ["es2015", "stage-2"]
+  "env": {
+    "development": {
+      "presets": ["es2015", "stage-2"]
+    },
+    "production": {
+      "presets": ["es2015-rollup"]
+    }
+  }
 }
 }

+ 70 - 0
build/build.js

@@ -0,0 +1,70 @@
+process.env.BABEL_ENV = 'production'
+
+var fs = require('fs')
+var zlib = require('zlib')
+var rollup = require('rollup')
+var uglify = require('uglify-js')
+var babel = require('rollup-plugin-babel')
+var version = process.env.VERSION || require('../package.json').version
+
+var banner =
+  '/*!\n' +
+  ' * Vuex v' + version + '\n' +
+  ' * (c) ' + new Date().getFullYear() + ' Evan You\n' +
+  ' * Released under the MIT License.\n' +
+  ' */'
+
+rollup.rollup({
+  entry: 'src/index.js',
+  plugins: [babel()]
+})
+.then(function (bundle) {
+  return write('dist/vuex.js', bundle.generate({
+    format: 'umd',
+    banner: banner,
+    moduleName: 'Vuex'
+  }).code)
+})
+.then(function () {
+  // Standalone Production Build
+  return rollup.rollup({
+    entry: 'src/index.js',
+    plugins: [babel()]
+  })
+})
+.then(function (bundle) {
+  var code = bundle.generate({
+    format: 'umd',
+    moduleName: 'Vuex'
+  }).code
+  var minified = banner + '\n' + uglify.minify(code, {
+    fromString: true,
+    output: {
+      ascii_only: true
+    }
+  }).code
+  return write('dist/vuex.min.js', minified)
+})
+.catch(logError)
+
+function write (dest, code) {
+  return new Promise(function (resolve, reject) {
+    fs.writeFile(dest, code, function (err) {
+      if (err) return reject(err)
+      console.log(blue(dest) + ' ' + getSize(code))
+      resolve()
+    })
+  })
+}
+
+function getSize (code) {
+  return (code.length / 1024).toFixed(2) + 'kb'
+}
+
+function logError (e) {
+  console.log(e)
+}
+
+function blue (str) {
+  return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m'
+}

+ 8 - 5
package.json

@@ -2,9 +2,9 @@
   "name": "vuex",
   "name": "vuex",
   "version": "0.4.0",
   "version": "0.4.0",
   "description": "state management for Vue.js",
   "description": "state management for Vue.js",
-  "main": "lib/index.js",
+  "main": "dist/vuex.js",
   "files": [
   "files": [
-    "lib",
+    "dist",
     "src"
     "src"
   ],
   ],
   "scripts": {
   "scripts": {
@@ -13,7 +13,7 @@
     "todomvc": "cd examples/todomvc && webpack-dev-server --inline --hot --config ../webpack.shared.config.js",
     "todomvc": "cd examples/todomvc && webpack-dev-server --inline --hot --config ../webpack.shared.config.js",
     "cart": "cd examples/shopping-cart && webpack-dev-server --inline --hot --config ../webpack.shared.config.js",
     "cart": "cd examples/shopping-cart && webpack-dev-server --inline --hot --config ../webpack.shared.config.js",
     "chat": "cd examples/chat && webpack-dev-server --inline --hot --config ../webpack.shared.config.js",
     "chat": "cd examples/chat && webpack-dev-server --inline --hot --config ../webpack.shared.config.js",
-    "prepublish": "babel src --out-dir lib --presets es2015 --plugins add-module-exports",
+    "build": "node build/build.js",
     "test": "eslint src && mocha --compilers js:babel-core/register",
     "test": "eslint src && mocha --compilers js:babel-core/register",
     "docs": "cd docs && gitbook serve",
     "docs": "cd docs && gitbook serve",
     "deploy-docs": "cd docs && ./deploy.sh"
     "deploy-docs": "cd docs && ./deploy.sh"
@@ -29,13 +29,13 @@
   },
   },
   "homepage": "https://github.com/vuejs/vuex#readme",
   "homepage": "https://github.com/vuejs/vuex#readme",
   "devDependencies": {
   "devDependencies": {
-    "babel-cli": "^6.6.0",
     "babel-core": "^6.2.1",
     "babel-core": "^6.2.1",
     "babel-loader": "^6.2.0",
     "babel-loader": "^6.2.0",
     "babel-plugin-add-module-exports": "^0.1.1",
     "babel-plugin-add-module-exports": "^0.1.1",
     "babel-plugin-transform-runtime": "^6.1.18",
     "babel-plugin-transform-runtime": "^6.1.18",
     "babel-polyfill": "^6.2.0",
     "babel-polyfill": "^6.2.0",
     "babel-preset-es2015": "^6.1.18",
     "babel-preset-es2015": "^6.1.18",
+    "babel-preset-es2015-rollup": "^1.1.1",
     "babel-preset-stage-2": "^6.1.18",
     "babel-preset-stage-2": "^6.1.18",
     "babel-runtime": "^5.8.0",
     "babel-runtime": "^5.8.0",
     "chai": "^3.4.1",
     "chai": "^3.4.1",
@@ -45,12 +45,15 @@
     "eslint-plugin-promise": "^1.0.8",
     "eslint-plugin-promise": "^1.0.8",
     "eslint-plugin-standard": "^1.3.2",
     "eslint-plugin-standard": "^1.3.2",
     "mocha": "^2.3.4",
     "mocha": "^2.3.4",
-    "style-loader": "^0.13.0",
+    "rollup": "^0.25.4",
+    "rollup-plugin-babel": "^2.4.0",
     "todomvc-app-css": "^2.0.3",
     "todomvc-app-css": "^2.0.3",
+    "uglify-js": "^2.6.2",
     "vue": "^1.0.8",
     "vue": "^1.0.8",
     "vue-hot-reload-api": "^1.2.1",
     "vue-hot-reload-api": "^1.2.1",
     "vue-html-loader": "^1.0.0",
     "vue-html-loader": "^1.0.0",
     "vue-loader": "^8.2.0",
     "vue-loader": "^8.2.0",
+    "vue-style-loader": "^1.0.0",
     "webpack": "^1.12.8",
     "webpack": "^1.12.8",
     "webpack-dev-server": "^1.12.1"
     "webpack-dev-server": "^1.12.1"
   }
   }