我遇到了Rollup和rollup-plugin-node-resolve的问题。
如果我有这种导入:
import _ from 'lodash';
它会转换为:
import _ from '../node_modules/lodash/lib/index.js';
当我尝试在使用Webpack的项目中使用它时打破了这个包,因为node_modules
文件夹显然不是我的Rollup-bundled包的文件夹的子文件(因为npm平衡了依赖项)。
我已将所有node_modules
定义为external
。
这是我的相关配置:
{
entry: 'dist/components-index.js',
external: id => id.indexOf('node_modules') >= 0,
plugins: [
resolve({
extensions: ['.jsx', '.js', '.json'],
}),
commonjs({
namedExports: { '../xxx-styles/lib/index.js': ['common', 'dark', 'light' ] },
}),
],
}
如何使构建保持节点模块导入保留绝对路径?我想在编写时保留它们,以便node.js / webpack / wathever可以正确解析导入。
答案 0 :(得分:1)
您希望在解决之前将[{Premium=203.05, Id=1000101}, {Premium=205.36, Id=1000102}, {Premium=207.67, Id=1000103}, {Premium=209.98, Id=1000104}, {Premium=212.29, Id=1000105}]
标记为外部:
lodash
将所有依赖项标记为外部的好方法是使用package.json文件中的{
entry: 'dist/components-index.js',
external: ['lodash', ...],
plugins: [
resolve({
extensions: ['.jsx', '.js', '.json'],
}),
commonjs({
namedExports: { '../xxx-styles/lib/index.js': ['common', 'dark', 'light' ] },
}),
],
}
字段:
"dependencies"
由于您将// rollup.config.js
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import pkg from './package.json';
export default {
entry: 'dist/components-index.js',
external: Object.keys(pkg.dependencies),
plugins: [
resolve({
extensions: ['.jsx', '.js', '.json'],
}),
commonjs({
namedExports: { '../xxx-styles/lib/index.js': ['common', 'dark', 'light' ] },
}),
],
}
中的所有内容标记为外部,我建议您不要使用node_modules
插件 - 如果您明确了解文件扩展名(Rollup可能会在附近保留这些文件扩展名)未来,为了增加与浏览器中的本机模块加载器的兼容性,您将不需要它。