我正在尝试创建一个self-executing bundle的应用程序,但jspm无法找到它正在寻找的内容。
我有以下文件夹结构
src
目录包含所有JavaScript,但它由节点托管,就好像它是根。托管jspm_packages
就好像它位于根目录内一样,使正常模块import
没有可能的路径(即import React from 'react'
)
该应用程序运行正常,但是当我尝试构建它失败时,因为它不知道查看src
目录和 jspm_packages
目录对于模块。有没有办法解决这个问题,而无需更改文件夹结构或root托管?
我可以将system.config.js
文件移动到src
,如果这样做可以的话)
如果您将jspm_packages
移至src
。
package.json
中的
"jspm": {
"directories": {
"baseURL": "src"
},
"configFile": "src/system.config.js"
}
这会将system.config.js
和jspm_packages
放在src
中(不要在baseUrl
中使用system.config.js
),捆绑也会有效。这里的主要缺点是src
文件夹不再仅包含项目代码;它现在还包含库代码。执行文件夹搜索变得更加困难,我只是想要一个包含所有 my 代码的文件夹。
在更多地考虑这个问题之后,我想我真正想要的是在捆绑期间指定备用path
配置的方法。根据我对文档的阅读,这似乎不受支持。
答案 0 :(得分:2)
您可以将 baseUrl 设置为根(即" /"),然后在路径上设置源代码的路径这样的财产:
System.config({
baseURL: "/",
paths: {
"*": "dist/*",
"github:*": "jspm_packages/github/*",
"npm:*": "jspm_packages/npm/*"
}
})
可以看到完整的工作示例here。
此外,如果您需要更改路径仅用于捆绑,您可以在gulp任务中使用jspm-cli并覆盖您的构建器配置,如下所示:
var jspm = require('jspm');
gulp.task('task', function () {
var builder = new jspm.Builder();
builder.loadConfigSync('pathToYourConfigFile');
builder.config({
paths: {
'*': 'pathToYourCode'
}
});
builder.bundle('yourOptionsHere');
}