Comments (7)
I think you will add
require.extensions[".server.js"] = require.extensions[".js"];
on node.js side to get node.js load the .server.js
extension.
and you will add
resolve: {
extensions: ["", ".client.js", ".js"]
}
to the webpack config to make it load the .client.js
extension.
So they all load the correct files, all you still need is a security check for not including .server.js
files.
In the current version this is not possible, but as webpack returns a list of files included, you may scan it for .server.js
files.
I think this is a cool feature and we can add a config options resolve.exclude = [/\.server\.js$/]
which exclude files from the bundle.
from webpack.
Unfortunately your extensions solution doesn't work since node trims everything before the last dot. That's the problem. But maybe I can add a loader for webpack that switches every .server.js
to a .client.js
module.
from webpack.
C:\Users\Sokrates\Eigene Repos\test7>node -v
v0.8.1
C:\Users\Sokrates\Eigene Repos>mkdir test7
C:\Users\Sokrates\Eigene Repos>cd test7
C:\Users\Sokrates\Eigene Repos\test7>echo module.exports = 1 > test.server.js
C:\Users\Sokrates\Eigene Repos\test7>node
> require("./test")
Error: Cannot find module './test'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at repl:1:2
at REPLServer.self.eval (repl.js:111:21)
at Interface.<anonymous> (repl.js:250:12)
at Interface.EventEmitter.emit (events.js:88:17)
at Interface._onLine (readline.js:183:10)
at Interface._line (readline.js:502:8)
> require.extensions[".server.js"] = require.extensions[".js"];
[Function]
> require("./test")
1
from webpack.
Oh sorry ... I must have done something wrong :)
But I also like the loader that switches to a .client
module if present and throws an error if not. In this case the IDE support is better (because in your solution WebStorm is complaining that this file doesn't exist - which is right ;) )
from webpack.
hey, take a look at a newly added feature to postprocess resolved filenames:
resolve: {
postprocess: {
normal: [
function(filename, cb) {
callback(null, filename.replace(/\.server\.js$/, ".client.js"));
}
]
}
}
postprocessors can do async stuff, i. e. you can check file existance, file content or anything else.
from webpack.
I'll dig that, thanks! What's about the normal
-thing? Could you create a documentation of that?
from webpack.
I'll do this.
normal
normal require (targets a file)context
require.context or similar (targets a folder)
from webpack.
Related Issues (20)
- Webpack build error for second time HOT 1
- `exportsPresence` does not work for unused imports HOT 3
- Implement ability to use "node:" prefixes for Node.js core modules HOT 1
- mangled exports breaks with destructuring assignment of JSON imports HOT 7
- there are confusing JDocs code
- Potential bug issues
- Webpack is not resolving node_modules specified in `resolve.modules` property.
- Dynamically loading chunks
- [Code implementation issues] ArrayQueue
- [feature] create cli HOT 3
- Not able to build node script
- bootstrap:27 Uncaught TypeError: __webpack_require__.nmd is not a function
- Self-reference dependency has unused export name when imported inside of a web worker
- support `import.meta.dirname` and `import.meta.filename` HOT 2
- <!-- identifier: admin-actions -->
- Remote into Web Component from React giving an error saying " Module does not exist in container"
- Multiple DefinePlugin instances cause aggressive cache invalidation due to collisions HOT 7
- Webpack fails when importing module
- import .scss build to js, the exported mapping is inconsistent with the usage【Urgent!!】
- Unused code elimination and deduplication is not applied when using sass's api: 'legacy' setting
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from webpack.