$ npm install d3-scale

 $ npm install --save-dev rollup rollup-plugin-babel babel-preset-es2015-rollup rollup-plugin-node-resolve



 我创建了以下文件。
&#xA ;
▼src / scripts / main.js


 var yScale = d3.scaleLinear()
 .domain([10,1200])
 .range([0,500]);

 console.log(yScale(1200)); // 500

&#xA;&#xA; 我创建了以下文件。 < /p>
▼rollup.config.js
从'rollup-plugin-babel'导入babel; && #xA;从“d3-scale”导入{scaleLinear}; &#xA;&#xA; export default {&#xA; entry:'src / scripts / main.js',&#xA; dest:'build / js / main.min.js',&#xA;格式:'iife',&#xA;插件:[&#xA; babel({&#xA; exclude:'node_modules / **',&#xA;}),&#xA; ],&#xA;};&#xA;
&#xA;&#xA; $ npm run build& #xA; 代码>
&#XA;&#XA; &#XA;&#xA;&#xA;&#XA;&#XA; &#XA;汇总-c
&#xA;⚠️'scaleLinear'是从外部模块“d3-scale”导入的,但&#xA;从未使用
&#xA;
以下文件是自动创建的
&#xA;&#xA;▼build / js / main.min.js
&#xA;&#xA; (function(){&#xA;'use strict';&#xA;& #xA; var yScale = d3.scaleLinear()。domain([10,1200])&#xA; .range([0,500]);&#xA; console.log(yScale(1200)); // 500&#XA;&#XA;}());&#XA; 代码>
&#XA;&#XA; 我创建了以下文件。
&#xA;&#xA;▼index.html
&#xA;&#xA; &lt; script src =“https://unpkg.com/d3”&gt;&lt; / script&gt;&#xA;&lt; script src =“build / js / main.min.js”&gt;&lt; / script&gt;&#xA ;
&#xA;&#xA; 浏览器访问
&#xA;&#xA;·控制台日志显示500
&#xA; &#xA;·没有问题。
&#xA;&#xA;但当我删除d3v4.js < /strong>
▼index.html
<scriptsrc =“build / js / main.min.js“&gt;&lt; / script&gt;&#xA;
&#xA;&#xA; 浏览器访问
&#xA;&#xA;&#XA;&#xA;&#xA;未捕获的ReferenceError:d3未定义
&#xA;
为什么我有包含为&lt; script src =“https://unpkg.com/d3”&gt;&lt; / script&gt;
?
·有没有办法避免加载&lt; script src =“https://unpkg.com/d3”&gt;&lt; / script&gt;
?
·即使只读取d3 - scale,为什么它不能正常工作?
&#xA;&#xA;2017/4/26
&#xA;&#xA;如何包含node-resolve插件,以便Rollup可以找到包含它的d3规模源代码?
&#xA;&#xA;▼rollup.config.js
&#xA;&#xA; 从'rollup-plugin-babel'导入babel; &#xA;从'rollup-plugin-node-resolve'导入解析;&#xA;&#xA; export default {&#xA; entry:'src / scripts / main.js',&#xA; dest:'build / js / main.min.js',&#xA;格式:'iife',&#xA;插件:[&#xA; babel({&#xA; exclude:'node_modules / **',&#xA;}),&#xA;解决({&#xA; //我想知道在这里写什么&#xA;})&#xA; ]&#XA;};&#XA; 代码>
&#XA;
答案 0 :(得分:2)
您收到该消息是因为您要将scaleLinear
导入配置文件,而不是您的应用。从配置文件中删除该行,您将不会收到警告。
严格来说,您的src/scripts/main.js
文件应如下所示:
import { scaleLinear } from 'd3-scale';
var yScale = scaleLinear() // <-- note there's no `d3.`
.domain([10, 1200])
.range([0, 500]);
console.log(yScale(1200)); // 500
在这种情况下,您可能需要调整配置文件,具体取决于您要执行的操作:
如果您想在Rollup创建的包中实际包含d3-scale
及其依赖项,以便您不需要将D3作为单独的<script>
标记加载,则需要包含{{ 3}}插件,以便Rollup可以找到包含它的d3-scale
源代码。
如果您不想在unpkg.com中添加D3,则需要执行此操作。
目前您的应用有效,因为window.d3
已分配给D3。这是完全正常的并且可以工作(你甚至根本不需要import
声明),但是如果你想使用更惯用的ES模块方法而不捆绑d3-scale
那么你需要添加跟随你的配置:
import babel from 'rollup-plugin-babel';
export default {
entry: 'src/scripts/main.js',
dest: 'build/js/main.min.js',
format: 'iife',
// tell Rollup that d3-scale is an external package
// and that it corresponds to `window.d3`
external: ['d3-scale'],
globals: {
'd3-scale': 'd3'
},
plugins: [
babel({
exclude: 'node_modules/**',
}),
],
};