aboutsummaryrefslogtreecommitdiff
path: root/node_modules/vue-style-loader/index.js
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/vue-style-loader/index.js
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/vue-style-loader/index.js')
-rw-r--r--node_modules/vue-style-loader/index.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/node_modules/vue-style-loader/index.js b/node_modules/vue-style-loader/index.js
new file mode 100644
index 00000000..4adcd219
--- /dev/null
+++ b/node_modules/vue-style-loader/index.js
@@ -0,0 +1,98 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+ Modified by Evan You @yyx990803
+*/
+var loaderUtils = require('loader-utils')
+var path = require('path')
+var hash = require('hash-sum')
+var qs = require('querystring')
+
+module.exports = function () {}
+
+module.exports.pitch = function (remainingRequest) {
+ var isServer = this.target === 'node'
+ var isProduction = this.minimize || process.env.NODE_ENV === 'production'
+ var addStylesClientPath = loaderUtils.stringifyRequest(this, '!' + path.join(__dirname, 'lib/addStylesClient.js'))
+ var addStylesServerPath = loaderUtils.stringifyRequest(this, '!' + path.join(__dirname, 'lib/addStylesServer.js'))
+ var addStylesShadowPath = loaderUtils.stringifyRequest(this, '!' + path.join(__dirname, 'lib/addStylesShadow.js'))
+
+ var request = loaderUtils.stringifyRequest(this, '!!' + remainingRequest)
+ var relPath = path.relative(__dirname, this.resourcePath).replace(/\\/g, '/')
+ var id = JSON.stringify(hash(request + relPath))
+ var options = loaderUtils.getOptions(this) || {}
+
+ // direct css import from js --> direct, or manually call `styles.__inject__(ssrContext)` with `manualInject` option
+ // css import from vue file --> component lifecycle linked
+ // style embedded in vue file --> component lifecycle linked
+ var isVue = (
+ /"vue":true/.test(remainingRequest) ||
+ options.manualInject ||
+ qs.parse(this.resourceQuery.slice(1)).vue != null
+ )
+
+ var shared = [
+ '// style-loader: Adds some css to the DOM by adding a <style> tag',
+ '',
+ '// load the styles',
+ 'var content = require(' + request + ');',
+ // content list format is [id, css, media, sourceMap]
+ "if(typeof content === 'string') content = [[module.id, content, '']];",
+ 'if(content.locals) module.exports = content.locals;'
+ ]
+
+ // shadowMode is enabled in vue-cli with vue build --target web-component.
+ // exposes the same __inject__ method like SSR
+ if (options.shadowMode) {
+ return shared.concat([
+ '// add CSS to Shadow Root',
+ 'var add = require(' + addStylesShadowPath + ').default',
+ 'module.exports.__inject__ = function (shadowRoot) {',
+ ' add(' + id + ', content, shadowRoot)',
+ '};'
+ ]).join('\n')
+ } else if (!isServer) {
+ // on the client: dynamic inject + hot-reload
+ var code = [
+ '// add the styles to the DOM',
+ 'var add = require(' + addStylesClientPath + ').default',
+ 'var update = add(' + id + ', content, ' + isProduction + ', ' + JSON.stringify(options) + ');'
+ ]
+ if (!isProduction) {
+ code = code.concat([
+ '// Hot Module Replacement',
+ 'if(module.hot) {',
+ ' // When the styles change, update the <style> tags',
+ ' if(!content.locals) {',
+ ' module.hot.accept(' + request + ', function() {',
+ ' var newContent = require(' + request + ');',
+ " if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];",
+ ' update(newContent);',
+ ' });',
+ ' }',
+ ' // When the module is disposed, remove the <style> tags',
+ ' module.hot.dispose(function() { update(); });',
+ '}'
+ ])
+ }
+ return shared.concat(code).join('\n')
+ } else {
+ // on the server: attach to Vue SSR context
+ if (isVue) {
+ // inside *.vue file: expose a function so it can be called in
+ // component's lifecycle hooks
+ return shared.concat([
+ '// add CSS to SSR context',
+ 'var add = require(' + addStylesServerPath + ').default',
+ 'module.exports.__inject__ = function (context) {',
+ ' add(' + id + ', content, ' + isProduction + ', context)',
+ '};'
+ ]).join('\n')
+ } else {
+ // normal import
+ return shared.concat([
+ 'require(' + addStylesServerPath + ').default(' + id + ', content, ' + isProduction + ')'
+ ]).join('\n')
+ }
+ }
+}