问题描述
我正在尝试创建一个 gulp 任务,该任务将使用 Rollup 使用环境变量为现代和旧版编译 JavaScript 文件。我已经为旧版引入了 plugin-node-resolve
和 plugin-commonjs
,但是每当我为旧版运行脚本时,我都会收到以下错误:
Message:\
Cannot read property 'preserveSymlinks' of undefined\
Details:\
code: PLUGIN_ERROR\
hook: buildStart\
domainEmitter: [object Object]\
domainThrown: false
注意:我知道 rollup-plugin-babel
、rollup-plugin-commonjs
和 rollup-plugin-node-resolve
的版本已被弃用。我已经尝试使用 @rollup/ 变体,但是当我使用这些变体时,出现以下错误,因此无论如何我都必须遗漏某些内容:
Message:
Cannot read property 'rollupVersion' of undefined
Details:
domainEmitter: [object Object]
domainThrown: false
这是我的文件:
吞咽任务
const babel = require('rollup-plugin-babel');
const commonjs = require('rollup-plugin-commonjs');
const concat = require( 'gulp-concat');
const gulp = require('gulp');
const resolve = require('rollup-plugin-node-resolve');
const rollup = require( 'gulp-rollup');
const library = require('./library');
module.exports = () => {
process.env.NODE_ENV = process.env.BROWSER;
const rollupConfig = {
allowRealFiles: true,input: library.getInputPath('scripts'),output: {'format': 'iife'},plugins: [
babel()
],onwarn(warning,warn) {
if (warning.code === 'THIS_IS_UNDEFINED') return;
warn(warning);
}
};
if (process.env.BROWSER === 'legacy') {
rollupConfig.plugins = [
...rollupConfig.plugins,resolve({
jsnext: true,main: true,browser: true
}),commonjs(),];
}
gulp.task('build:scripts',gulp.series('lint:scripts',() => {
const inputPath = library.getInputPath('scripts');
const outputPath = library.getOutputPath('scripts');
const outputFile = library.getFileName('scripts');
return gulp.src(inputPath)
.pipe(rollup(rollupConfig))
.pipe(concat(outputFile))
.pipe(gulp.dest(outputPath));
}));
}
.babelrc:
{
"exclude": "node_modules/**","env": {
"modern": {
"plugins": [
"@babel/plugin-proposal-class-properties"
]
},"legacy": {
"presets": [
"@babel/preset-env"
],"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)