weapp-tailwindcss icon indicating copy to clipboard operation
weapp-tailwindcss copied to clipboard

支持pnpm

Open bingtsingw opened this issue 3 years ago • 2 comments

描述这个Bug 使用pnpm的时候, 会报错

代码url 官方demo, 把包管理器改成pnpm就能复现

如何重现 Steps to reproduce the behavior:

  1. rm yarn.lock
  2. pnpm install
  3. pnpm run dev

屏幕截图(可选) image

bingtsingw avatar May 16 '22 09:05 bingtsingw

哈哈,这个我之前也用 pnpm 试过 uni-app,也是各种报错,原因应该是 webpack-sources 版本问题导致的不匹配,我这个插件依赖的 webpack-sources3.2.3 ,图里面报错的版本是 1.4.3. 这个 issue 我先尝试通过改 lock 文件解决一下,你先使用 yarn 或者 npm 进行开发吧。

sonofmagic avatar May 16 '22 09:05 sonofmagic

哈哈,这个我之前也用 pnpm 试过 uni-app,也是各种报错,原因应该是 webpack-sources 版本问题导致的不匹配,我这个插件依赖的 webpack-sources3.2.3 ,图里面报错的版本是 1.4.3. 这个 issue 我先尝试通过改 lock 文件解决一下,你先使用 yarn 或者 npm 进行开发吧。

好的, 谢谢大佬

bingtsingw avatar May 16 '22 11:05 bingtsingw

哈哈,这个我之前也用 pnpm 试过 uni-app,也是各种报错,原因应该是 webpack-sources 版本问题导致的不匹配,我这个插件依赖的 webpack-sources3.2.3 ,图里面报错的版本是 1.4.3. 这个 issue 我先尝试通过改 lock 文件解决一下,你先使用 yarn 或者 npm 进行开发吧。

能不能加到devDependencies,安装依赖时很有可能把webpack依赖的版本放内部node_modules了,把你这个项目的依赖放到了外部,导致报错。

yqz0203 avatar Aug 23 '22 06:08 yqz0203

哈哈,这个我之前也用 pnpm 试过 uni-app,也是各种报错,原因应该是 webpack-sources 版本问题导致的不匹配,我这个插件依赖的 webpack-sources3.2.3 ,图里面报错的版本是 1.4.3. 这个 issue 我先尝试通过改 lock 文件解决一下,你先使用 yarn 或者 npm 进行开发吧。

能不能加到devDependencies,安装依赖时很有可能把webpack依赖的版本放内部node_modules了,把你这个项目的依赖放到了外部,导致报错。

webpack-sources 这个不能加进 devDependencies 里,原因在于,我这个包啊,是要兼容 webpack4webpack5 的。 而他们最后都被打入了一个 bundle webpack-sources 这个依赖实际上是为了 webpack4 添加的:

import { ConcatSource, Source } from 'webpack-sources'

webpack5 可以很方便的直接从 compiler 里拿出来:

const { ConcatSource , Source } = compiler.webpack.sources

这个需求,可能需要我为 webpack4webpack5 打不同的包,来解决这个问题。

sonofmagic avatar Aug 23 '22 06:08 sonofmagic

哈哈,这个我之前也用 pnpm 试过 uni-app,也是各种报错,原因应该是 webpack-sources 版本问题导致的不匹配,我这个插件依赖的 webpack-sources3.2.3 ,图里面报错的版本是 1.4.3. 这个 issue 我先尝试通过改 lock 文件解决一下,你先使用 yarn 或者 npm 进行开发吧。

能不能加到devDependencies,安装依赖时很有可能把webpack依赖的版本放内部node_modules了,把你这个项目的依赖放到了外部,导致报错。

webpack-sources 这个不能加进 devDependencies 里,原因在于,我这个包啊,是要兼容 webpack4webpack5 的。 而他们最后都被打入了一个 bundle webpack-sources 这个依赖实际上是为了 webpack4 添加的:

import { ConcatSource, Source } from 'webpack-sources'

webpack5 可以很方便的直接从 compiler 里拿出来:

const { ConcatSource , Source } = compiler.webpack.sources

这个需求,可能需要我为 webpack4webpack5 打不同的包,来解决这个问题。

[email protected]的ConcatSource缺少了listMap这个方法,所以是不兼容webpack 4的,看能不能降级到1.4.x的版本呢。。。

yqz0203 avatar Aug 23 '22 06:08 yqz0203

嗯,好的,我测试一下哈

sonofmagic avatar Aug 23 '22 06:08 sonofmagic

我创建了一个库 pnpm-install-webpack-plugin-test-case 使用 pnpm 安装,版本为 7.9.3。安装成功后,pnpm dev:mp-weixinpnpm build:mp-weixin 都可以顺利运行,没有报错的,你升级一下 pnpm 版本试试呢,lock 文件 pnpm-lock.yaml

webpack-sources 是在 v3 删除了这个node() and listMap() 这 2个 api

见 https://github.com/webpack/webpack-sources/releases/tag/v3.0.0

你可以把你的运行环境,使用 uni-app 的版本啊, pnpm 版本, nodejs版本这些都带上看看。

sonofmagic avatar Aug 23 '22 06:08 sonofmagic

我使用 [email protected] 在今天新创建的 taro 项目中使用,也没有问题的,项目demo:

https://github.com/sonofmagic/taro-react-tailwind-vscode-template

所以我感觉,这应该是当时 pnpm 没处理好依赖导致的,现在 pnpm 的最新版本应该已经修复了,所以 pnpm 已经支持了。 @yqz0203 @bingtsingw

pnpm node_modules/.pnpm 依赖截图:

image

sonofmagic avatar Aug 23 '22 13:08 sonofmagic

我不是pnpm,是一个monorepo项目,项目用的webpack4,所以出现了这个问题。

yqz0203 avatar Aug 25 '22 10:08 yqz0203

我不是pnpm,是一个monorepo项目,项目用的webpack4,所以出现了这个问题。

那你可能需要的是 hoist 机制,这个机制 pnpmyarn 都有的,详见 https://pnpm.io/npmrc#hoist

sonofmagic avatar Aug 25 '22 13:08 sonofmagic

hoist 特意屏蔽了webpack的,因为子项目间webpack版本不同有冲突,,,总之有点蛋疼。

yqz0203 avatar Aug 25 '22 13:08 yqz0203

我现在是通过打补丁的方式解决的。。强制把这个包的webpack-source依赖改成了1.x、

yqz0203 avatar Aug 25 '22 13:08 yqz0203

好的,你是 yarn 还是 pnpm 做的 monorepo 呀,我要复现这个问题话,大概应该咋做呀?

sonofmagic avatar Aug 25 '22 13:08 sonofmagic

monrepo 的问题,到时候新开一个 issue 吧,现在版本的 pnpm 已经可以正常运作了。

sonofmagic avatar Sep 05 '22 15:09 sonofmagic