Rww*_*wwL 6 javascript reactjs babeljs rollupjs
我正在尝试将 React 集成到使用 Rollup 的现有应用程序中,并尝试在此过程中升级到最新的 Babel 和 Rollup 版本。当 I 时yarn build,有关未解析的依赖项和缺少全局变量名称的错误/警告输出不会提供有关哪些依赖项是问题的一部分的更多信息:
(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
[object Object] (imported by commonjs-proxy:[object Object])
(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
[object Object] (guessing '_object_Object_')
created public/app.js in 12.1s
? Done in 13.52s.
Run Code Online (Sandbox Code Playgroud)
所以,在生成的 app.js 中,它以
(function (_object_Object_) {
'use strict';
var _object_Object___default = 'default' in _object_Object_ ? _object_Object_['default'] : _object_Object_;
// etc etc etc
}(_object_Object_));
Run Code Online (Sandbox Code Playgroud)
这是我的 rollup.config.js:
/**
* Imports
*/
import resolve from '@rollup/plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import babel from 'rollup-plugin-babel';
import uglify from 'rollup-plugin-uglify-es';
import json from 'rollup-plugin-json'
import eslint from 'rollup-plugin-eslint';
import filesize from 'rollup-plugin-filesize';
import progress from 'rollup-plugin-progress'
import visualizer from 'rollup-plugin-visualizer';
/**
* Constants
*/
const production = !process.env.ROLLUP_WATCH;
/**
* Configuration
*/
export default {
input: 'client/src/main.jsx',
output: {
file: 'public/app.js',
format: 'iife'
},
plugins: [
progress(),
eslint(),
resolve({
mainFields: ['main', 'module', 'browser'],
extensions: ['.js', '.jsx', '.json'],
}), // resolve dependencies from node_modules
json(),
commonjs({
include: ['node_modules/**'],
exclude: ['node_modules/process-es6/**'],
namedExports: {
'node_modules/react/index.js': [
'Children',
'Component',
'PropTypes',
'createElement',
],
'node_modules/react-dom/index.js': ['render'],
},
}), // convert CommonJS modules to ES modules
babel({
exclude: ['node_modules/**'],
presets: ['@babel/preset-env', '@babel/preset-react']
}), // convert with Babel
production && uglify(), // minify if not development
!production && visualizer(),
filesize(),
],
};
Run Code Online (Sandbox Code Playgroud)
这些是我devDependencies的package.json:
"@babel/cli": "^7.7.5",
"@babel/core": "^7.7.5",
"@babel/plugin-external-helpers": "^7.7.4",
"@babel/preset-env": "^7.7.6",
"@babel/preset-react": "^7.7.4",
"@rollup/plugin-node-resolve": "^6.0.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"codacy-coverage": "^3.4.0",
"eslint": "^6.0.1",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.18.0",
"eslint-plugin-react": "^7.17.0",
"event-emitter": "^0.3.5",
"mocha": "^6.1.4",
"mocha-junit-reporter": "1.22.0",
"mocha-multi-reporters": "^1.1.6",
"nyc": "^14.1.1",
"rollup": "^1.27.12",
"rollup-plugin-babel": "^4.3.3",
"rollup-plugin-commonjs": "^8.2.6",
"rollup-plugin-eslint": "^4.0.0",
"rollup-plugin-filesize": "5.0.1",
"rollup-plugin-json": "^4.0.0",
"rollup-plugin-progress": "^1.1.1",
"rollup-plugin-uglify-es": "^0.0.1",
"rollup-plugin-visualizer": "^3.3.0"
Run Code Online (Sandbox Code Playgroud)
我目前已将我的入口点 ( client/src/main.jsx) 和应用程序组件精简到最低限度:
import React from 'react'; // eslint-disable-line no-unused-vars
import ReactDOM from 'react-dom';
import App from './App.jsx';
const reactContainer = document.querySelector('#reactRoot');
ReactDOM.render(<App />, reactContainer);
Run Code Online (Sandbox Code Playgroud)
import React from 'react';
class App extends React.Component {
render() { // eslint-disable-line class-methods-use-this
return <h1>Here goes.</h1>;
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?我已经按照输出中的链接(https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency)并按照指示非常仔细,还检查了其他各种 Rollup+React 存储库,但我发现没有一个使用最新版本的 Babel 或 Rollup。
| 归档时间: |
|
| 查看次数: |
2959 次 |
| 最近记录: |