From e31a733727dc4ee489de85026a8ecdcb843e53b8 Mon Sep 17 00:00:00 2001 From: hucq Date: Fri, 28 Dec 2018 17:22:34 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E7=99=BE=E5=BA=A6=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fbuild=E5=85=B3=E9=97=ADjsuglify=EF=BC=8C=E7=94=9F?= =?UTF-8?q?=E6=88=90=20.frameworkinfo=20=E6=96=87=E4=BB=B6=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=BD=93=E5=89=8Dmpvue=E7=89=88=E6=9C=AC=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/.eslintrc.js | 6 +++++- template/build/build.js | 4 ++++ template/build/dev-server.js | 8 +++++++- template/build/utils.js | 24 ++++++++++++++++++++++++ template/build/webpack.prod.conf.js | 10 +++++++--- template/package.json | 1 + 6 files changed, 48 insertions(+), 5 deletions(-) diff --git a/template/.eslintrc.js b/template/.eslintrc.js index 9576fd0..1602d24 100644 --- a/template/.eslintrc.js +++ b/template/.eslintrc.js @@ -44,7 +44,11 @@ module.exports = { // don't require .vue extension when importing 'import/extensions': ['error', 'always', { 'js': 'never', - 'vue': 'never' + 'vue': 'never', + 'json': 'never' + }], + 'import/no-unresolved': [2, { + 'caseSensitive': false }], // allow optionalDependencies 'import/no-extraneous-dependencies': ['error', { diff --git a/template/build/build.js b/template/build/build.js index 78466e9..252681b 100644 --- a/template/build/build.js +++ b/template/build/build.js @@ -10,6 +10,7 @@ var chalk = require('chalk') var webpack = require('webpack') var config = require('../config') var webpackConfig = require('./webpack.prod.conf') +var utils = require('./utils') var spinner = ora('building for production...') spinner.start() @@ -19,6 +20,9 @@ rm(path.join(config.build.assetsRoot, '*'), err => { webpack(webpackConfig, function (err, stats) { spinner.stop() if (err) throw err + if (process.env.PLATFORM === 'swan') { + utils.writeFrameworkinfo() + } process.stdout.write(stats.toString({ colors: true, modules: false, diff --git a/template/build/dev-server.js b/template/build/dev-server.js index ebf684b..19e6694 100644 --- a/template/build/dev-server.js +++ b/template/build/dev-server.js @@ -15,6 +15,7 @@ var portfinder = require('portfinder') var webpackConfig = {{#if_or unit e2e}}(process.env.NODE_ENV === 'testing' || process.env.NODE_ENV === 'production') ? require('./webpack.prod.conf') : {{/if_or}}require('./webpack.dev.conf') +var utils = require('./utils') // default port where dev server listens for incoming traffic var port = process.env.PORT || config.dev.port @@ -25,7 +26,12 @@ var autoOpenBrowser = !!config.dev.autoOpenBrowser var proxyTable = config.dev.proxyTable var app = express() -var compiler = webpack(webpackConfig) +var compiler = webpack(webpackConfig, function (err, stats) { + if (err) throw err + if (process.env.PLATFORM === 'swan') { + utils.writeFrameworkinfo() + } +}) // var devMiddleware = require('webpack-dev-middleware')(compiler, { // publicPath: webpackConfig.output.publicPath, diff --git a/template/build/utils.js b/template/build/utils.js index fd81fd2..8ef47f2 100644 --- a/template/build/utils.js +++ b/template/build/utils.js @@ -1,6 +1,9 @@ var path = require('path') +var fs = require('fs') var config = require('../config') var ExtractTextPlugin = require('extract-text-webpack-plugin') +var mpvueInfo = require('../node_modules/mpvue/package.json') +var packageInfo = require('../package.json') exports.assetsPath = function (_path) { var assetsSubDirectory = process.env.NODE_ENV === 'production' @@ -85,3 +88,24 @@ exports.styleLoaders = function (options) { } return output } + +exports.writeFrameworkinfo = function () { + var buildInfo = { + toolName: mpvueInfo.name, + toolFrameWorkVersion: mpvueInfo.version, + toolCliVersion: packageInfo.mpvueTemplateProjectVersion || '', + createTime: Date.now() + } + + var content = JSON.stringify(buildInfo) + var fileName = '.frameworkinfo' + var rootDir = path.resolve(__dirname, `.././${fileName}`) + var distDir = path.resolve(config.build.assetsRoot, `./${fileName}`) + + fs.writeFile(rootDir, content, 'utf8', function (err) { + if (err) throw err + }) + fs.writeFile(distDir, content, 'utf8', function (err) { + if (err) throw err + }) +} diff --git a/template/build/webpack.prod.conf.js b/template/build/webpack.prod.conf.js index 22b5cf8..3022ac7 100644 --- a/template/build/webpack.prod.conf.js +++ b/template/build/webpack.prod.conf.js @@ -35,9 +35,6 @@ var webpackConfig = merge(baseWebpackConfig, { new webpack.DefinePlugin({ 'process.env': env }), - new UglifyJsPlugin({ - sourceMap: true - }), // extract css into its own file new ExtractTextPlugin({ // filename: utils.assetsPath('[name].[contenthash].css') @@ -116,4 +113,11 @@ if (config.build.bundleAnalyzerReport) { webpackConfig.plugins.push(new BundleAnalyzerPlugin()) } +var useUglifyJs = process.env.PLATFORM !== 'swan' +if (useUglifyJs) { + webpackConfig.plugins.push(new UglifyJsPlugin({ + sourceMap: true + })) +} + module.exports = webpackConfig diff --git a/template/package.json b/template/package.json index 679c21b..50085f4 100644 --- a/template/package.json +++ b/template/package.json @@ -1,6 +1,7 @@ { "name": "{{ name }}", "version": "1.0.0", + "mpvueTemplateProjectVersion": "0.0.1", "description": "{{ description }}", "author": "{{ author }}", "private": true,