-
-
Notifications
You must be signed in to change notification settings - Fork 35
Description
I'm submitting a bug report
- Library Version:
2.0.0-rc.2 but I have also tested against rc.5
Please tell us about your environment:
-
Operating System:
OSX 10.12.6 -
Node Version:
7.4.0 -
NPM Version:
4.0.5 -
JSPM OR Webpack AND Version
Webpack 3.3.0 -
Browser:
Chrome 60 -
Language:
ESNext
Current behavior:
PLATFORM.moduleName() behaves differently when using absolute, relative, and alias paths in different areas.
Expected/desired behavior:
If using a relative path, I expect the relative module to be loaded/used.
If using an absolute path, I expect the absolute module to be loaded/used.
If using an aliased path, I expect the aliased module to be loaded/used.
Example Skeleton:
I cloned the most recent webpack skeleton (Aug 31st) and modified it to provide examples here:
https://github.com/pat841/aurelia-webpack-test
Files of interest:
- main.js
- app.js
- webpack.config.js
main.js:
/**
* FEATURE EXAMPLES
*/
// Working as expected
// .feature(PLATFORM.moduleName('test_feature/index'));
// Not working?
// .feature(PLATFORM.moduleName('test_feature'));
// .feature(PLATFORM.moduleName('./test_feature/index'));
// .feature(PLATFORM.moduleName('./test_feature'));
/**
* PLUGIN EXAMPLES
*/
// Working as expected
// .plugin(PLATFORM.moduleName('test_plugin/index'));
// .plugin(PLATFORM.moduleName('test_plugin'));
// Not working?
// .plugin(PLATFORM.moduleName('./test_plugin/index'));
// .plugin(PLATFORM.moduleName('./test_plugin'));
/**
* ALIAS EXAMPLES
*/
// Working as expected
// .feature(PLATFORM.moduleName('test_alias/test_feature/index'));
// .plugin(PLATFORM.moduleName('test_alias/test_plugin/index'));
// .plugin(PLATFORM.moduleName('test_alias/test_plugin'));
// Not working?
// .feature(PLATFORM.moduleName('test_alias/test_feature'));app.js:
config.map([
// Working as expected
{ route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./sample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./test/testsample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./test_feature/testfeaturesample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./test_plugin/testpluginsample'), title: 'Sample' }
// Not working?
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/sample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/test/testsample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/test_feature/testfeaturesample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/test_plugin/testpluginsample'), title: 'Sample' }
// Somehow working?
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('sample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test/testsample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_feature/testfeaturesample'), title: 'Sample' }
// { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_plugin/testpluginsample'), title: 'Sample' }
]);webpack.config.js:
resolve: {
extensions: ['.js'],
modules: [srcDir, 'node_modules'],
alias: {
test_alias: srcDir
}
},As you can see above, PLATFORM.moduleName() acts differently depending on WHERE its used (feature, plugin, route) as well as HOW the path is represented (relative, absolute, or aliased).
Simple Example: Aliased paths are working when using .plugin() or .feature() but not inside route moduleIds.