Skip to content
This repository was archived by the owner on Jan 18, 2022. It is now read-only.

Refactoring #63

Merged
merged 12 commits into from
Feb 27, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "2.3.0-beta.2",
"description": "Roll .vue files",
"main": "dist/rollup-plugin-vue.common.js",
"jsnext": "dist/rollup-plugin-vue.js",
"module": "dist/rollup-plugin-vue.js",
"scripts": {
"test": "npm run lint && npm run build && npm run unit",
"build": "node config/build.js",
Expand Down Expand Up @@ -81,5 +81,9 @@
"uglify-js": "^2.7.5",
"vue-hot-reload-api": "^2.0.8",
"yargs": "^6.6.0"
},
"optionalDependencies": {
"coffee-script": "^1.12.4",
"coffeescript-compiler": "^0.1.1"
}
}
21 changes: 13 additions & 8 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ export default function vue (opts = {}) {
}
opts.compileTemplate = false;
}
} catch (e) {}
} catch (e) {
}
/* eslint-enable */

const config = mergeOptions(DEFAULT_OPTIONS, opts)
Expand All @@ -44,14 +45,15 @@ export default function vue (opts = {}) {
}
},
load (id) {
if (id.indexOf('.vue.component.') > -1) {
const parts = id.split('.')
const component = parts.slice(0, parts.length - 4).join('.')
const index = parseInt(parts[parts.length - 4])
if (id.indexOf('.vue.component.') < 0) return null

return styles[component][index] || ''
}
const parts = id.split('.')
const component = parts.slice(0, parts.length - 4).join('.')
const index = parseInt(parts[parts.length - 4])

if (index < styles[component].length) return styles[component][index]
},

async transform (source, id) {
if (!filter(id) || !id.endsWith('.vue')) {
debug(`Ignore: ${id}`)
Expand All @@ -69,7 +71,10 @@ export default function vue (opts = {}) {

ongenerate () {
if (config.styleToImports !== true) {
if (config.css === undefined || config.css === null) config.css = DEFAULT_OPTIONS.css
if (config.css === undefined || config.css === null) {
config.css = DEFAULT_OPTIONS.css
}

compileStyle(styles, config)
}
}
Expand Down
102 changes: 102 additions & 0 deletions src/injections.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 42 additions & 4 deletions src/options.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
import { templateJs, moduleJs, renderJs } from './injections'
import { coffee } from './script/index'

export default {
// Style compilation choices.
styleToImports: false,
autoStyles: true,
disableCssModuleStaticReplacement: false,

// Config for html-minifier.
htmlMinifier: {
customAttrSurround: [[/@/, new RegExp('')], [/:/, new RegExp('')]],
collapseWhitespace: true,
removeComments: true
},

// Handle with(this)
vue: {
// Remove all transforms added by vue since it's up to the user
// to use whatever he wants
Expand Down Expand Up @@ -34,12 +45,39 @@ export default {
unicodeRegExp: false
}
},
styleToImports: false,
autoStyles: true,
disableCssModuleStaticReplacement: false,

// Config for postcss-modules.
cssModules: {
generateScopedName: '[name]__[local]'
},

// Config for node-sass.
scss: {},
pug: {}

// Config for pug compiler.
pug: {},

// Custom injectors.
inject: {
template: {
js: templateJs,
babel: templateJs
},

render: {
js: renderJs,
babel: renderJs
},

module: {
js: moduleJs,
babel: moduleJs
}
},

// script languages.
script: {
coffee,
coffeescript: coffee
}
}
17 changes: 17 additions & 0 deletions src/script/coffee.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import Compiler from 'coffeescript-compiler'

const coffee = new Compiler()

export default function (script) {
return new Promise((resolve, reject) => {
coffee.compile(script.code, { bare: true }, (status, output) => {
if (status === 0) {
script.code = output

resolve(script)
} else {
reject(`Coffee compiler exited with status code ${status}.`)
}
})
})
}
1 change: 1 addition & 0 deletions src/script/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default as coffee } from './coffee'
Loading