【问题标题】:npm run script invoking Rollup does nothing but open config file调用 Rollup 的 npm run 脚本除了打开配置文件什么都不做
【发布时间】:2022-03-03 00:54:16
【问题描述】:
我们有一个脚本 "build": "rollup -c rollup.js --environment production",当我们的一些团队(使用 Windows)调用它时,它有时会自发地无法正常运行,而是在编辑器中打开 rollup.js 配置文件。不幸的是,我真的不知道从哪里开始,因为我从来没有能够复制它。没有生成日志文件,据我所知,ignore-scripts 没有设置,这是我在 SO 上看到的与此行为相关的唯一其他事情。
这是一个已知的事情,有一个简单的解决办法吗?或者如果没有,我应该去哪里找到有关此的更多信息?这会是 npm 的问题,还是 rollup 的问题?
【问题讨论】:
标签:
npm
rollupjs
npm-scripts
【解决方案1】:
我在 Windows 上遇到了同样的情况。
我使用 WSL 绕过它。
【解决方案2】:
通过一些调查,我发现这是一个关于他们如何处理配置文件的汇总错误。我觉得好像我应该就此向他们开一张票,但我一直在代表团队成员行事,并且没有能力自己复制它,所以......我想我会尝试强迫他们这样做。
但无论如何,从我可以看出,查看 rollup 的源代码,如果 rollup 配置文件有一个普通的 .js 扩展名,那么它看起来好像 rollup 在配置上运行以将其转换为 CommonJS 格式,然后它将在实际构建步骤中导入和使用。在 Windows 上的这个过程中的某个地方出现了问题,结果是配置文件最终会被 JS 文件的默认处理程序打开。所以基本上解决方案是更改文件扩展名。
我们的原始配置是使用 ES6 导入/导出设置的,此时我不清楚将扩展名更改为 .mjs 是否会跳过或以其他方式更改此转换步骤,当人们有试过了,但我不能保证。我所做的是改为通过配置并将所有 ES6 导入/导出手动转换为 CommonJS require(),然后将文件扩展名更改为 .cjs(因此我们的配置从 rollup.js 更改为 rollup.cjs)现在它似乎始终如一地工作。