Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

用mpvue开发微信小程序,只要文件内容更改,则必须npm run dev. #801

Closed
wangtingtingdvdsv opened this issue Jul 24, 2018 · 21 comments
Labels
wontfix This will not be worked on

Comments

@wangtingtingdvdsv
Copy link

项目生成之后,如果更改文件内容,只需要在微信开发者工具里面编译就好,但过了一会,不知道为什么,如果更改了文件内容,必须npm run dev,只有这样,更改的内容才会生效。

@KeeepTrying
Copy link

更新到最新版rc.4
image
碰到同样问题,hot-reload出问题了
@aOrz

@wangtingtingdvdsv
Copy link
Author

那你把这个问题解决了吗

@hizhm
Copy link

hizhm commented Jul 24, 2018

我的这是这个问题,请问解决了吗

@aOrz
Copy link
Member

aOrz commented Jul 24, 2018

能不能提供个可固定复现的路径?

@wangtingtingdvdsv
Copy link
Author

我的还没有解决,你们有啥解决方法吗

@wind4gis
Copy link

我这边也是,好奇怪

@aOrz
Copy link
Member

aOrz commented Jul 24, 2018

@JPdan @wind4gis @hizhm mac 和 win 下都没有复现,能不能提供个 demo ?描述下过程?改动源文件之后,看下控制台,有没有自动 compiler ?

如果使用了 mpcue-loader@1.1.x 版本,请升级到最新的 1.1.2-rc.4 版本

如果是新增页面没有反应,参考:http://mpvue.com/qa/#_2

@wind4gis
Copy link

最近做了些改动,为了需求进行分包以及编译出来的文件以index开头,改了webpack.base.conf.js,我最后把整个文件贴出来。现在的问题是在vue文件里写template、改样式,微信工具都没有及时显示更改后的界面,要中断之后,重新run dev才会显示。
改动源文件之后,控制台是有自动compile的
我刚刚升级了Loader版本发现还是不行
另外,我装了pug,pug-loader,这两个应该无关吧。。。

// webpack.base.conf.js
var path = require('path');
var fs = require('fs');
var utils = require('./utils');
var config = require('../config');
var vueLoaderConfig = require('./vue-loader.conf');
var MpvuePlugin = require('webpack-mpvue-asset-plugin');
var glob = require('glob');
var relative = require('relative');

var configFilesArray = [];

// @ext.json : 手动复制ext.json至dist目录
var CopyWebpackPlugin = require('copy-webpack-plugin');

function resolve(dir) {
  return path.join(__dirname, '..', dir);
}

function getEntry(rootSrc) {
  var map = {};
  //fileArray 自定义打包入口分包
  var config = fs.readFileSync('./src/main.json', 'utf8')
  var subPage = JSON.parse(config).subPackages.map(c => path.join(c.root, 'pages'))
  var fileArray = ['pages', ...subPage];

  fileArray.map(name => {
    glob.sync(rootSrc + `/${name}/**/index.js`).forEach(file => {
      var key = relative(rootSrc, file).replace('.js', '');
      map[key] = file;
    });
    glob.sync(rootSrc + `/${name}/**/index.json`).forEach(file => {
      configFilesArray.push({
        from: file,
        to: relative(rootSrc, file)
      });
    });
  });
  return map;
}

const appEntry = {
  app: resolve('./src/main.js')
};

configFilesArray.push({
  from: resolve('./src/main.json'),
  to: 'app.json'
});

const pagesEntry = getEntry(resolve('./src'));
const entry = Object.assign({}, appEntry, pagesEntry);
module.exports = {
  // 如果要自定义生成的 dist 目录里面的文件路径,
  // 可以将 entry 写成 {'toPath': 'fromPath'} 的形式,
  // toPath 为相对于 dist 的路径, 例:index/demo,则生成的文件地址为 dist/index/demo.js
  entry,
  target: require('mpvue-webpack-target'),
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      vue: 'mpvue',
      '@': resolve('src')
    },
    symlinks: false,
    aliasFields: ['mpvue', 'weapp', 'browser'],
    mainFields: ['browser', 'module', 'main']
  },
  module: {
    rules: [{
        test: /\.vue$/,
        loader: 'mpvue-loader',
        options: vueLoaderConfig
      },
      {
        test: /\.js$/,
        include: [resolve('src'), resolve('test')],
        use: [
          'babel-loader',
          {
            loader: 'mpvue-loader',
            options: {
              checkMPEntry: true
            }
          }
        ]
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[ext]')
        }
      },
      {
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('media/[name].[ext]')
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('fonts/[name].[ext]')
        }
      }
    ]
  },
  plugins: [
    new MpvuePlugin(),
    new CopyWebpackPlugin(configFilesArray),
    // @ext.json : 手动复制ext.json至dist目录
    new CopyWebpackPlugin([{
        from: path.join(__dirname, '../src/ext.json'),
        to: path.join(__dirname, '../dist/ext.json')
      },
      {
        from: path.join(__dirname, '../static'),
        to: path.join(__dirname, '../dist/static')
      }
    ])
  ]
}

@KeeepTrying
Copy link

@aOrz 是最新的rc.4
改动后会compiler,微信开发者工具也会重载刷新,就是功能没实现,
重新start,是可以的,rc前几个版本没出现这个问题的

@wangtingtingdvdsv
Copy link
Author

我是rc.2,出现了这个问题,请问你是不是找到解决方法了呢

@aOrz
Copy link
Member

aOrz commented Jul 25, 2018

@JPdan 是不是用了 slot ?是只 slot 内容不更新还是所有内容都没更新?

@wind4gis
Copy link

写JS也是同样问题,要重新dev才可以看到更改后的JS。我这边用最小的rc.4,所有内容都没有更新

@hizhm
Copy link

hizhm commented Jul 25, 2018

刚开始下载的也是,但是又重新下载了demo后就可以了...时间相差4个小时,

@KeeepTrying
Copy link

KeeepTrying commented Jul 25, 2018

@aOrz 没有用slot,很奇怪,不是每次都不更新
例子:
image
image
isBack从true改为false,compiler了,开发工具也超载刷新了,数据没变,重新dev就好了,变为false了

@KeeepTrying
Copy link

怕是因为isBack是Boolean原因,
改为isBack: { type: String, // default: true, },
<top-bar :isBack="222"/>
image
还是一样没有更新

@wind4gis
Copy link

还真是因为我加了在每个页面的文件夹下加了index.json的原因。。。

@wangtingtingdvdsv
Copy link
Author

我曾也怀疑是每个页面下的index.json的原因,但我删掉index.json之后,问题还是没有解决

@wind4gis
Copy link

还有一个疑惑,可以让mpvue-loader输出的时候指定文件名为index吗,页面的文件名固定为index.wxml/index.json/index.js/index.wxss,而不是main开头的文件名。
很多项目都是把路径指定为index而不是main,试过改配置输出index开头的文件,但是会报奇怪的错误

@aOrz
Copy link
Member

aOrz commented Jul 26, 2018

按照下图改下 build/webpack.base.conf.js 试下,应该是 win 下与 webpack-copy-plugin 的兼容性问题
image

@panjiangyi
Copy link

这框架一堆恶性bug

@shuixiaobin
Copy link

mpvue-entry了解下,支持热更新和分包

@mpvue-bot mpvue-bot bot added the wontfix This will not be worked on label Oct 23, 2018
@mpvue-bot mpvue-bot bot closed this as completed Oct 30, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

7 participants