背景
最近在开发的组件库中发现一个问题,去组件库里边修改了之后,顺理成章的npm publish出去,可是publish之后,当自己在开发环境下测试的时候,发现根本没有修改成功。
解决思路
1
刚开始以为是没有发布成功,于是又去组件库里边重新修改了下,可是发现在开发环境下重装还是不行,还是没有得到修改。
可是npm publish也没有报错,应该是没有什么问题
后来想着到开发环境下的node_modules目录下,发现这里的组件库里边的代码也是最新的,那应该是发布成功了。
2
后来思考为什么在开发环境下没有成功呢,是不是开发环境下没有使用node_modules目录的组件库啊?
于是直接删掉node_modules目录的组件库,直接报错,
看来应该是使用了node_modules的组件库,可是为什么没有使用node_modules下的最新的代码呢?
于是想改改node_modules的组件库下的打包后的文件,可是发现就是把里边的内容删掉了,开发环境还是正常的。
既然这样,那开发环境里边用到的组件库代码是哪里来的呢?
后来想了下,先使用npm link 看看自己修改的代码,打包之后是不是正常的,可是发现使用npm link后,在开发环境下就是正常的了,那充分说明了,组件库修改的代码没有任何问题,问题就出在在开发环境下,使用的是哪里的组件库代码?
3
找了半天没有找到在哪里?
后来想想先把代码发布到测试线上,利用测试线下载最近发布的npm 组件库代码,看看有没有任何问题?
看来最后的问题,还是出现在开发环境下,到底是使用了哪里的组件库代码,导致一直使用的旧的组件库代码,没有使用最新的修改之后的代码?
想了下,是不是使用npm link ,导致一直使用的npm link的代码,可是按说不应该啊,因为npm link之后,也是使用的最近修改的组件库代码啊?
话虽如此,还是去npm link的目录下删掉了,可是仍然没有用。
实在找不到哪里了?
突然想到了,以前的时候,用npm run dll 把许多引入的npm包,打成了dll文件,于是去dll的配置文件,发现修改的组件库,被打包成了dll文件,所以在开发环境中一直是使用的dll文件的组件库代码,而不是修改的组件库代码,直接重新打包就可以了
为了防止以后类似事情,直接在npm start之前,首先先打包一次dll文件