提交 f2eb0cf7 编写于 作者: fxy060608's avatar fxy060608

feat(app-plus-nvue): add changed files log

上级 4a8a5d3e
......@@ -3,10 +3,6 @@ const webpack = require('webpack')
const VueLoaderPlugin = require('vue-loader/lib/plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const {
done
} = require('@vue/cli-shared-utils')
const {
getNVueMainEntry,
nvueJsPreprocessOptions,
......@@ -14,6 +10,7 @@ const {
devtoolModuleFilenameTemplate
} = require('@dcloudio/uni-cli-shared')
const WebpackAppPlusNVuePlugin = require('../packages/webpack-app-plus-nvue-plugin')
const WebpackErrorsPlugin = require('@dcloudio/vue-cli-plugin-uni/packages/webpack-errors-plugin')
const onErrors = require('@dcloudio/vue-cli-plugin-uni/util/on-errors')
......@@ -51,12 +48,12 @@ if (
) {
provide['__f__'] = [require.resolve('@dcloudio/vue-cli-plugin-uni/lib/format-log.js'), 'default']
}
const plugins = [
new VueLoaderPlugin(),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify(process.env.NODE_ENV),
'NODE_ENV': JSON.stringify(process.env.NODE_ENV),
'VUE_APP_PLATFORM': JSON.stringify(process.env.UNI_PLATFORM)
}
}),
......@@ -69,28 +66,11 @@ const plugins = [
new WebpackErrorsPlugin({
onErrors
}),
function (compiler) {
compiler.hooks.done.tapPromise('WebpackAppPlusNVuePlugin', compilation => {
return new Promise((resolve, reject) => {
if (isFirst) {
isFirst = false
} else {
if (process.env.NODE_ENV === 'development') {
done(`Build complete. Watching for changes...`)
} else {
done(`Build complete. `)
}
}
resolve()
})
})
}
new WebpackAppPlusNVuePlugin()
]
const excludeModuleReg = /node_modules(?!(\/|\\).*(weex).*)/
let isFirst = !process.env.UNI_USING_NATIVE
const rules = [{
test: path.resolve(process.env.UNI_INPUT_DIR, 'pages.json'),
use: [{
......@@ -210,7 +190,7 @@ module.exports = function (entry) {
extensions: ['.js', '.nvue', '.vue', '.json'],
alias: {
'@': process.env.UNI_INPUT_DIR,
'uni-pages': path.resolve(process.env.UNI_INPUT_DIR, 'pages.json'),
'uni-pages': path.resolve(process.env.UNI_INPUT_DIR, 'pages.json'),
'@dcloudio/uni-stat': require.resolve('@dcloudio/uni-stat'),
'uni-stat-config': path.resolve(process.env.UNI_INPUT_DIR, 'pages.json') +
'?' +
......
{
"name": "@dcloudio/vue-cli-plugin-hbuilderx",
"version": "1.0.135",
"version": "1.0.136",
"description": "HBuilderX plugin for vue-cli 3",
"main": "index.js",
"scripts": {
......
const {
done
} = require('@vue/cli-shared-utils')
class WebpackAppPlusNVuePlugin {
apply(compiler) {
let isFirst = !process.env.UNI_USING_NATIVE
const chunkVersions = {}
const changedFiles = []
compiler.hooks.emit.tapAsync('webpack-uni-nvue', (compilation, callback) => {
changedFiles.length = 0
const changedChunks = compilation.chunks.filter(chunk => {
const oldVersion = chunkVersions[chunk.name]
chunkVersions[chunk.name] = chunk.hash
return chunk.hash !== oldVersion
})
changedChunks.map(chunk => {
if (Array.isArray(chunk.files)) {
chunk.files.forEach(file => {
!changedFiles.includes(file) && (changedFiles.push(file))
})
}
})
callback()
})
compiler.hooks.done.tapPromise('webpack-uni-nvue', compilation => {
return new Promise((resolve, reject) => {
if (isFirst) {
isFirst = false
} else {
if (process.env.NODE_ENV === 'development') {
if (
changedFiles.length > 0 &&
!changedFiles.find(file => file === 'app-config.js' || file === 'app-service.js')
) {
done(`Build complete. PAGES:` + JSON.stringify(changedFiles))
} else {
done(`Build complete. Watching for changes...`)
}
} else {
done(`Build complete. `)
}
}
resolve()
})
})
}
}
module.exports = WebpackAppPlusNVuePlugin
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册